Este artículo ejemplo Node.js crea un servidor de chat web para comunicación instantánea para su referencia. El contenido específico es el siguiente
1. Use NodeJs-Websocket
NodeJS-Websocket es una biblioteca de backend que implementa el protocolo WebSocket escrito basado en Node.js.
Conexión: https://github.com/sitegui/nodejs-websocket.
(1) Instalación
Instalar a través de NPM en el directorio del proyecto: NPM Instalar NodeJS-Websocket
(2) Crear un servidor
// Introduzca NodeJS-WebSocketVar ws = require ("NodeJS-Websocket"); // llame al método CreateServer para crear el servidor, y la conexión en la función de devolución de llamada es una instancia de la conexión var servidor = ws.create (function (conn) {console.log ("nueva conexión"); // Escuchar el evento de texto, y el evento de texto se desencadena cada vez que los datos de tipo de texto se reciben desde el servidor, y los parámetros de la devolución de llamada son la función de texto pasada. + str);2. El cliente usa WebSocket
En el cliente, debe instanciar un objeto WebSocket: ws = new WebSocket ("ws: // localhost: 5000"); El parámetro pasado en IS WS: //+URL, que es el mismo que el prefijo del protocolo HTTP http: //. A continuación, puede usar algunos métodos incorporados de WebSocket para monitorear eventos y mostrar datos.
Aquí presentamos cada evento de escucha: Onopen se desencadena cuando el servidor y el cliente establecen una conexión; OnMessage se desencadena cuando el cliente recibe datos enviados por el servidor; OnClose se desencadena cuando el cliente y la conexión del servidor están cerradas; OnError se dispara cuando ocurre el error de conexión.
3. Use WebSocket + NodeJS para implementar la sala de chat en línea
(1) omitido el código HTML y CSS
(2) Cliente JS:
oconnect.onclick = function () {ws = new WebSocket ('ws: // localhost: 5000'); ws.onopen = function () {oUl.innerhtml+= "<li> Cliente conectado </li>"; } ws.onmessage = function (evt) {oUl.innerhtml+= "<li>"+evt.data+"</li>"; } ws.onclose = function () {oUl.innerhtml+= "<li> Cliente desconectado </li>"; }; ws.onerror = function (evt) {oUl.innerhtml+= "<li>"+evt.data+"</li>"; }; }; osend.OnClick = function () {if (ws) {ws.send (oinput.value); }} (3) Lado del servidor JS: /*WebSocket admite dos tipos de transmisión de datos: tipo de texto y tipo binario, donde los datos binarios se envían y leen a través del patrón de transmisión* /var App = requirir ('http'). CreateServer (Handler); // Para simplificar el código, coloque el código específico de la creación del servidor en la función del controlador var ws = require ('nodejs-websocket'); var fs = require ('fs'); app.listen (8888); Handler de funciones (REQ, RES) {// __ Dirname Devuelve el directorio actual donde se encuentra el archivo. Llame al método ReadFile para la lectura de archivos fs.ReadFile (__ dirname+'/index.html', function (err, data) {if (err) {res.writehead (500); return res.end ('error');} res.writehead (200); res.end (data);});} // Los pasos anteriores renderfuly render el que corresponde a la correspondiente interface el interface correspondiente el interface correspondiente correspondiente a la correspondiente interface correspondiente que corresponde a la correspondiente interface instancia de la conexión VAR correspondiente var ser servidor = ws.createServer (function (conn) {console.log ('new Connecton'); // Escuchar el evento de texto, y activar conn.on ("text", function (str) {cada vez que el texto se recibe de transmisión (servidor, str);}); // Cuando cualquier extremo cierra la conexión, la conexión se emite en el console. console.log ('Conexión cerrada'); // Tenga en cuenta que el oyente aquí es el puerto del servidor que se acaba de abrir. El cliente envía el mensaje aquí para procesar la función de transmisión de funciones (servidor, msg) {//server.connections es una matriz que contiene todos los clientes conectados.connections.forEach (function (conn) {//connection.sendText Method puede enviar el contenido especificado al cliente y pasar una cadena // aquí es traer a cada cliente a enviar el contenido a IT.sendxEspero que todo el contenido de esto sea útil para el aprendizaje de todos, y espero que todos apoyen más a Wulin.com.