我可以在同一服务器中输入不同的websockets - 在不同的客户端输出

时间:2013-07-31 10:09:24

标签: node.js websocket

让我澄清问题的标题。

在客户端,我有两个不同的html个文件,client1.htmlclient2.html。它们通过websockets将数据发送到node.js中的同一server.js文件。

在服务器端,如果数据来自client1.html,我想执行查询并将结果发送到client1.html。在同一台服务器上,如果数据来自client2.html我想执行另一个查询并向client2.html发送消息“数据已保存”。

我想,我必须在server.js中创建两个不同的函数。好。

但是,我的问题是,在服务器端,如何判断哪些数据来自哪个客户端? 此外,服务器如何将正确的消息发送回正确的客户端?

提前致谢

1 个答案:

答案 0 :(得分:2)

您必须注册您的客户。例如,如果用户A在页面client1.html上,那么您发送消息(通过websockets),例如JSON(或您喜欢的任何其他格式):

{ "user": "A", "page": "client1.html" }

现在,在服务器端,您只需标记此用户/连接来自client1.html。您可以添加自定义属性:

conn.source = "client1.html";

或任何其他方式(取决于例如框架)。

您甚至可以使用握手(而不是发送JSON):例如,当连接到服务器时(在客户端):

var ws = new WebSocket("ws://myserver/client1.html");

现在你只需要在握手代码中做同样的事情(client1.html现在是握手中URL的一部分。)

至于其他问题:在服务器端,您保留client1.htmlclient2.html等所有用户的列表。其余的显而易见:您遍历目标列表并向这些列表发送通知用户。

当然这里有很多小细节。就像你必须在连接失效时从列表中删除用户(因此你需要一个后台任务来检查一个连接是否存活)等等。但这是一般的想法。