使用webSocket向特定的已连接用户发送消息?

我编写了用于向 所有 用户广播消息的代码:

// 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;

...

请注意:

  • 我没有任何用户参考,只有一个连接。
  • 所有用户连接均存储在中array

:假设Node.js服务器希望将消息发送到特定客户端(约翰)。NodeJs服务器如何知道John拥有哪个连接?Node.js服务器甚至都不认识John。它所看到的只是连接。

因此,我相信现在,我不应该仅通过用户连接来存储用户,而是需要存储一个对象,其中将包含userIdconnection对象。

  • 页面加载完成(DOM准备就绪)后-建立与Node.js服务器的连接。

  • 当Node.js服务器接受连接时-生成一个唯一的字符串,并将其发送到客户端浏览器。将用户连接和唯一字符串存储在一个对象中。例如{UserID:"6", value: {connectionObject}}

  • 在客户端,当此消息到达时-将其存储在隐藏字段或cookie中。(用于将来对NodeJs服务器的请求)


当服务器要向John发送消息时:

  • 在字典中找到john的UserID并通过相应的连接发送消息。

  • 请注意,此处(在消息机制中)没有inplocate的asp.net服务器代码。仅NodeJ。*

这是正确的方法吗?

回答:

这不仅是正确的方法,而且是唯一的方法。基本上每个连接都需要一个唯一的ID。否则,您将无法识别它们,就这么简单。

现在,您将如何表示它是另一回事。使用idconnection属性创建对象是实现此目的的一种好方法(我肯定会这么做)。您也可以将id直接附加到连接对象。

还要记住,如果要在用户之间进行通信,则还必须发送目标用户的ID,即,当用户A要向用户B发送消息时,显然,A必须知道B的ID。

以上是 使用webSocket向特定的已连接用户发送消息? 的全部内容, 来源链接: utcz.com/qa/427429.html

回到顶部