【问题标题】:Connection between multiple clients to a single server in NodejsNodejs中多个客户端到单个服务器之间的连接
【发布时间】:2019-03-21 13:07:06
【问题描述】:

我需要创建 20 个客户端,它们使用 websocket 同时向 nodejs 中的服务器发出请求。我能够使用 websocket 在单个服务器和客户端之间创建连接。但是当谈到创建 20 个客户时,我没有任何想法可以继续。请提出任何建议以继续进行。

【问题讨论】:

  • 你可以使用 socket.io 库。见这里github.com/socketio/socket.io
  • 我正在使用 websocket 建立连接。它与使用 socket.io 相同。我担心为这个应用程序创建这 20 个客户端。 20个客户端是指在应用中创建20个html页面吗?

标签: node.js websocket client-server


【解决方案1】:

您不需要创建 20 个 html 页面。多个客户端可以加载相同的 HTML 页面。

在服务器端,每次客户端连接到您的 websocket 服务器时都会触发“请求”事件。您的 websocket 服务器将能够开箱即用地处理多个客户端。但是,您需要确定此特定请求来自“哪个”客户端。这可以通过使用令牌或凭据,或您希望在客户端和服务器之间建立的任何其他自定义协议来完成。

在此处查看websocket 模块的服务器端使用示例:https://www.npmjs.com/package/websocket#server-example

【讨论】:

  • 您能否详细说明多个客户端如何加载同一个html页面?任何代码 sn-p 都会有所帮助。
  • 您不需要任何额外的代码即可在多个客户端中加载网页。启动浏览器,使用服务器地址打开网页 (html)。打开一个新标签页或窗口,再次输入相同的网址,html 应该也可以在这个新标签页中正常加载。
  • 谢谢。我之前使用过这种方法。这种方法的问题是我无法区分客户端,因为所有客户端都使用相同的端口。我需要优先考虑客户并根据他们的优先级处理请求。你能解释一下吗?
  • websocket 库允许客户端传递额外的参数。在此处查看Client.connect 函数文档github.com/theturtle32/WebSocket-Node/blob/master/docs/…。您可以在标题或查询参数中传递“额外”数据。假设客户端使用任何一种方法发送登录用户 ID。在您的“请求”事件处理程序的服务器端,您将提取用户 ID,并据此采取行动。请注意,在现实世界中,客户端几乎肯定会发送一个身份验证令牌或 jwt 令牌,而不是简单的用户 ID,因为这很容易被模拟。
  • 你的解释看起来不错。我将通过这种方法解决这个问题。谢谢你的帮助。 @elem4th
猜你喜欢
  • 2021-08-17
  • 2023-03-09
  • 2012-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多