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 userIdy el connectionobjeto.
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?