如何将SockJS与另一个Web框架集成

MLi*_*ter 7 web2py web-frameworks server-push reverse-ajax websocket

作为Socket.io的替代品,有SockJS(https://github.com/sockjs/sockjs-client),它似乎比Socket.io更好地维护和更稳定.

这个问题是关于概念性理解将SockJS与Web框架一起使用的架构,例如,用于构建聊天应用程序

我目前的理解是你需要SockJS客户端和SocketJS服务器(在我的情况下,我打算使用SockJS-Tornado(https://github.com/MrJoes/sockjs-tornado))来制作websockets-风格沟通.

但是SockJS(SockJS-client + SockJS-Tornado)如何与执行其余工作的Web框架(例如,提供页面,写入/读取数据库等)相结合.例如,SockJS-Tornado组件如何与框架的Web服务器通信?特别是,高度赞赏使用web2py(python web框架)执行此操作的任何方向.

Mar*_*rek 4

你是对的,对于 SockJS,你需要一个支持 sockjs 的服务器和一个浏览器内的 javascript 客户端库。

通常有两种集成模式,假设您想使用 sockjs-tornado:

  1. 您的所有网站可能都由 Tornado 提供服务。这样,将 sockjs-tornado 挂接到某个路径,例如“http://mysite.com/sockjs”。在这种情况下,您的网站和 sockjs 都将从 mysite.com 域提供服务。
  2. 您可以将您的网站保留在其编写的任何语言/框架中,并将 sockjs-server 添加为另一个组件,在不同的域下,例如。'http://sockjs.mysite.com/sockjs'。

此外,您可以使用它的任何变体 - 例如:内部有两台服务器,但通过使用智能负载平衡器(如 haproxy)将它们公开为一个域。

  • 保留两台独立的服务器。一 - 你的旧应用程序。新-sockjs-龙卷风。如果您想将其公开为单个域,或者仅使用两个单独的域,请使用 HAProxy 进行路由。如果您需要 sockjs 和您的应用程序之间的通信 - 使用 Redis Pub/sub、RabbitMQ 或 Zeromq 在两者之间交换消息。 (2认同)