0

让我澄清一下问题的标题。

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

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

我想,我必须在server.js. 好的。

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

提前致谢

4

1 回答 1

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等等。其余的很明显:您遍历目标列表并向这些用户发送通知。

当然这里还有很多小细节。就像如果连接已死,您必须从列表中删除用户(因此您需要一个后台任务来检查连接是否处于活动状态)等等。但这是一般的想法。

于 2013-07-31T10:36:09.473 回答