Escribí un código para transmitir un mensaje a todos los usuarios:
// websocket and http servers
var webSocketServer = require('websocket').server;
...
...
var clients = [ ];
var server = http.createServer(function(request, response) {
// Not important for us. We're writing WebSocket server, not HTTP server
});
server.listen(webSocketsServerPort, function() {
...
});
var wsServer = new webSocketServer({
// WebSocket server is tied to a HTTP server.
httpServer: server
});
// This callback function is called every time someone
// tries to connect to the WebSocket server
wsServer.on('request', function(request) {
...
var connection = request.accept(null, request.origin);
var index = clients.push(connection) - 1;
...
Note por favor:
- No tengo ninguna referencia de usuario, solo una conexión.
- Todas las conexiones de los usuarios se almacenan en un archivo
array
.
Objetivo : digamos que el servidor Node.js quiere enviar un mensaje a un cliente específico (John). ¿Cómo sabría el servidor de NodeJs qué conexión tiene John? El servidor de Node.js ni siquiera conoce a John. todo lo que ve son las conexiones.
Entonces, creo que ahora, no debería almacenar usuarios solo por su conexión, en cambio, necesito almacenar un objeto, que contendrá el userId
y el connection
objeto.
Idea:
Cuando la página termine de cargarse (DOM listo), establezca una conexión con el servidor Node.js.
Cuando el servidor Node.js acepta una conexión, genera una cadena única y envíala al navegador del cliente. Almacene la conexión del usuario y la cadena única en un objeto. p.ej
{UserID:"6", value: {connectionObject}}
En el lado del cliente, cuando llegue este mensaje, guárdelo en un campo oculto o en una cookie. (para futuras solicitudes al servidor NodeJs)
Cuando el servidor quiere enviar un mensaje a John:
Busque el ID de usuario de John en el diccionario y envíe un mensaje mediante la conexión correspondiente.
tenga en cuenta que no se incluye ningún código de servidor asp.net aquí (en el mecanismo de mensajes). solo NodeJs. *
Pregunta:
¿Es este el camino correcto a seguir?