- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想让用户创建并加入“房间”,以便他们可以进行协作。
我正在看SockJs Multiplexer server我想知道我是否可以利用其中的一些来创建并广播到特定的 channel /房间。
在示例中,channel is created manually和 client connects to that channel 。
将这些 channel 视为房间可以吗?
有没有办法动态创建这些 channel ,而不是在服务器上手动声明它们?
最佳答案
免责声明:在我写下答案之前,我没有注意到您指的是服务器的 Javascript 版本。因此,我的代码示例是使用基于Python的sockjs-tornado给出的。 ,不过我想原理应该是一样的。
是的,您可以通过在每个 SockJSConnection
派生类中保留一组引用连接来将 channel 视为房间。为此,您需要的只是稍微更改每个连接类
class AnnConnection(SockJSConnection):
def on_open(self, info):
self.send('Ann says hi!!')
def on_message(self, message):
self.broadcast(self.connected, 'Ann nods: ' + message)
至
class AnnConnection(SockJSConnection):
connected = WeakSet()
def on_open(self, info):
self.connected.add(self)
self.send('Ann says hi!!')
def on_message(self, message):
self.broadcast(self.connected, 'Ann nods: ' + message)
def on_close(self):
self.connected.remove(self)
super(AnnConnection, self).on_close()
在 server.py .
为了动态创建 channel ,我稍微更改了 __main__
代码和 MultiplexConnection
类,并添加了几个新类。在 if __name__ == "__main__":
block 中,
# Create multiplexer
router = MultiplexConnection.get(ann=AnnConnection, bob=BobConnection,
carl=CarlConnection)
已更改为
# Create multiplexer
router = MultiplexConnection.get()
同时
class MultiplexConnection(conn.SockJSConnection):
channels = dict()
# …
def on_message(self, msg):
# …
if chan not in self.channels:
return
在 MultiplexConnection已更改为
class MultiplexConnection(conn.SockJSConnection):
channels = dict()
_channel_factory = ChannelFactory()
# …
def on_message(self, msg):
# …
if chan not in self.channels:
self.channels[chan] = self._channel_factory(chan)
和类
class DynamicConnection(SockJSConnection):
def on_open(self, info):
self.connected.add(self)
self.send('{0} says hi!!'.format(self.name))
def on_message(self, message):
self.broadcast(self.connected, '{0} nods: {1}'
.format(self.name, message))
def on_close(self):
self.connected.remove(self)
super(DynamicConnection, self).on_close()
class ChannelFactory(object):
_channels = dict()
def __call__(self, channel_name):
if channel_name not in self._channels:
class Channel(DynamicConnection):
connected = WeakSet()
name = channel_name
self._channels[channel_name] = Channel
return self._channels[channel_name]
已添加到 multiplex.py .
关于python - sockjs - 实现房间的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16023933/
目前,我的客户端连接在我刷新页面时打开,在我关闭/刷新选项卡时关闭。 我知道我可以从服务器端关闭连接,但我在文档中找不到从客户端关闭连接的方法。 我希望能够在单击一个按钮时打开一个新连接,并在单击另一
我一直在检查两个类似的解决方案,以使用独立的 Python 服务器通过 sockJS 支持网络套接字,到目前为止,我找到了两个解决方案。 我需要编写一个复杂的、可扩展的基于 web socket 的
我正在尝试从 sockjs-client 库中导入 SockJS。我正在使用 Aurelia 和 typescript ,但在尝试使用 导入时 import { SockJS } from 'sock
我将 https://github.com/mrjoes/sockjs-tornado 用于 Django 应用程序。我可以很容易地从 javascript 控制台发送消息。但我想在 Django 中
我正在关注这个 tutorial此刻,我到了必须在我的 Angular5 组件中实例化我的 SockJS-Client 的地方。 这是我所做的: 我执行以下命令来安装所需的库: npm install
我正在尝试设置一个简单的 html/Js 页面。 我已经安装了 webpack 和 babel。我已经使用“build”和“start”脚本配置了 package.json 文件。 该页面运行良好,但
我正在使用 SocketJS 和 Stomp 通过后端 api 发送文件以进行处理。 我的问题是,如果同时完成两个以上的上传,上传功能就会卡住。 前任: 用户 1 -> 上传文件 -> 后端正确接收文
我想让用户创建并加入“房间”,以便他们可以进行协作。 我正在看SockJs Multiplexer server我想知道我是否可以利用其中的一些来创建并广播到特定的 channel /房间。 在示例中
我正在尝试找出一种方法,让我的 SockJS 客户端在服务器出现故障时重新连接到服务器。 我目前有这个: new_conn = function() { socket =
我正在使用 Vert.x 和 SockJS 来传输封装在消息中的数据。是否有规范 SockJS/Websocket 消息可以有多大? 最佳答案 SockJS 消息的大小没有明确的限制。但不幸的是,So
我正在尝试建立从前端到 vertx 后端的 sock.js 连接。 我最初的尝试是这样的: let token = ''; let data = {'Authorization' : 'Bearer
我正在开发一个 Node.js 后端,它通过 websocket 与一些桌面客户端进行通信,而服务器端的通信是从 Web 前端发起的。一切正常,因为我将 SockJS Connection 实例存储在
我正在开发一个应用程序,它使用 SockJS 来更新连接到服务器的其他应用程序的一些通用数据。问题来了,当我尝试在两个浏览器选项卡中打开它,因为只有其中一个实现了连接,而另一个则一直等待直到超时。 谁
我想通过 Bower 获取最新的 SockJS,并将其保存到我的 bower.json 文件中。 根据GitHub sockjs-client page ,最新版本是 v1.0.3(我看到它的标签)。
有什么方法可以让 Android 与 SockJs 一起在 Phonegap 中打包的应用程序中进行套接字连接?目前我有以下代码可在 iOS 上运行但在 Android 上失败,因为 file:///
使用 node.js 和名为“echo”的 sockjs github 示例 https://github.com/sockjs/sockjs-node ,如果没有任何变化,传输将在大约 130-15
我的应用程序堆栈: 在我的服务器上运行着一个 Redis 服务器。 PHP 后端通过 Redis 服务器与 Predis 库进行通信。它将发布消息。这些消息将由我的 Redis 客户端 (node.j
我有一个网站(Java + Spring)依赖 Websockets(Stomp over Websockets 用于 Spring + RabbitMQ + SockJS)来实现某些功能。 我们正在
我有一个在 localhost:8080 上运行的 SpringBoot 服务器和本地主机上的 npm(服务于 React 应用程序):3000 每当我尝试建立到 spring 的 websocket
正在尝试连接到 SockJs server .我正在从安全的 https 页面 https://localhost/index.php 运行以下代码 var sockjs_url = 'htt
我是一名优秀的程序员,十分优秀!