0

I want to add on an existing project some sockets with nodeJs and Socket.io. I already have 2 servers :

  • An API RESTful web service, to storage and manage my datas.
  • A Public web service to return HTML, assets (js, css, images, ...)

On the first try, I create my socket server on the Public one. But I think it will be better if I create an other one to handle only socket query.

What do you think ? It's a good idea or just an useless who will add more problem than solve (maybe duplicate intern lib, ..)

Also, i'm using token to communicate between Public and API, do I have to create another to communication between socket and API ? Or I can use the same one ?

------[EDIT]------

As nobody didn't understand me well I have create a schema with the infrastructure I was thinking about.

  1. It is a good way to proceed ?
  2. The Public Server and Socket server have to be the same ? Or can be separate ?
  3. Do I must create a socket connection between API and Socket server for each client connected ?

enter image description here

Thank you !

4

1 回答 1

1

感谢您更好地解释。

首先,虽然这看起来很合理,但这种使用 Socket.io 的方式并不是最常见的。使用 Socket.io 的最大优点是它为 2-way 通信保持通道打开。这样做的主要优点是服务器本身可以向客户端发送消息,而客户端不必定期轮询。
例如,考虑一个邮件客户端。如果没有套接字,浏览器将不得不定期轮询以检查新邮件。相反,使用打开的套接字连接,只要有新邮件到达,服务器就会立即通知客户端。

在您的情况下,好处可能是有限的,而且我不确定 Socket.io 服务器的额外复杂性(和成本!)是否真的值得对 REST 请求进行适度的速度改进。但是,最终取决于您。

回答你的观点

  1. 看上面
  2. 如果“公共服务器”不是用 Node.js 编写的,它们就不能是同一个应用程序。他们是否驻留在同一台服务器上,这取决于您和您的预算。理想情况下,它们应该是分开的,用于更大的工作负载。
  3. 如果您只是希望套接字服务器充当实时代理,那么是的,您必须为每个请求创建一个套接字连接。这将如何工作是:

    1. 客户端向 Socket.io 服务器请求资源。
    2. Socket.io 服务器向 API 服务器发出正常的 HTTP 请求(例如使用request
    3. 响应通过套接字连接返回给客户端

#3 中表示的工作流程是您应该期望仅适度性能改进的原因。实际上,您会得到一些更好的延迟,但启动 HTTP 请求的大部分开销仍然存在!

于 2015-03-25T13:56:23.543 回答