问题标签 [sockjs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
websocket - sockjs-tornado 方法中的异步调用
我正在sockjs-tornado上构建服务器,想知道如何利用 tornado 的异步 HTTP 客户端或其他用于 tornado 的异步工具,例如 asyncmongo、tornado-redis 等。显然不可能使用tornado.web.asynchronous
&tornado.gen.engine
装饰器关于随机方法。因此,如果我需要从 SockJSConnection's 中进行异步 Mongo/HTTP/Redis 调用on_message()
,我该怎么做?
websocket - SockJS-Tornado 中的 JSON 消息
在on_message()
SockJS-Tornado 库的方法中,我想向客户端发送 JSON 消息:有时使用方法发送给特定客户端send()
,有时使用方法发送给一组客户端broadcast()
。
我想知道simplejson
在发送消息之前是否需要自己使用类似对字符串键控字典对象进行编码的东西,即
还是 SockJS-Tornado 已经处理了编码部分?另外,方法中的message
参数on_message()
是否也总是一个 JSON 对象?
node.js - 如何通过 SockJS(websocket)与 NodeJS 持久/持久连接?
在用户重新加载页面期间,在通过 SockJS(websocket)连接的 NodeJS 中管理连接以持久(不断开连接)一段时间的最佳解决方案是什么?
我可以通过会话做到这一点吗?
python - Vertx SockJS 服务器与 sockjs-tornado
我一直在检查两个类似的解决方案,以使用独立的 Python 服务器通过 sockJS 支持 Web 套接字,到目前为止,我找到了两个解决方案。
我需要编写一个复杂的、可扩展的基于 Web 套接字的 Web 应用程序,而且恐怕很难扩展 Tornado,而且似乎 Vertx 对 Web 套接字的水平扩展更好。
我也知道 Redis 可以与 Tornado 一起用于水平扩展 pub/sub 系统,以及 HAproxy 用于扩展 SockJS 请求。
在 Vertx 和 Tornado 之间,编写支持 SockJS 的可扩展系统的首选解决方案是什么?
erlang - 与处理 websocket 连接的牛仔进程链接(cowboy,erlang)
我正在开发一个同时使用牛仔和 sockjs 的 erlang 应用程序,我想知道是否可以与处理 websocket 连接的牛仔进程链接?
现在,带有 gen_server 行为的进程与每个 websocet 连接相关联。这样的进程将 Conn 实例存储在 init 中,当客户端关闭连接时,该进程将从 websocket 处理程序中终止,如果 gen_server 进程终止,则从 gen_server 的 terminate() 调用 Conn:close 来进行清理。它有效,但我不喜欢这个解决方案,因为在某些情况下,即使启用了 trap_exit,也不会调用终止函数,所以如果可以进行链接,它会是更好、更简单的解决方案。
websocket - Websocket 握手与 HAProxy 挂起
使用最新的 Chrome 浏览器,我正在尝试使用sockjs
客户端与位于haproxy
. 在我的本地主机上(没有haproxy
中间),这工作正常 - 客户端可以使用websocket
协议连接、发送和接收消息。例如:
一旦我将它部署到服务器上HAProxy
,就会发生奇怪的事情,sockjs
认为连接是打开的(如conn.readyState === SockJS.OPEN
控制台日志中出现“发送的消息”),但是,websocket
握手只是挂起,服务器永远不会收到消息。以下是我在haproxy
日志中看到的内容:
请注意,第二个日志消息仅在我关闭后端服务器时出现haproxy
。关机前,日志中没有错误,但是 websocket 握手没有完成,服务器也没有收到 msg。
使用 Chrome 的开发人员工具,在“网络”选项卡中,我看到以下内容:
并且对象的“类型”和“时间延迟”都在websocket
开发人员工具的网络选项卡下显示“待定”。
最后,这是我的haproxy
配置(版本 1.4.22):
有谁知道为什么会这样?是由于某些haproxy
配置,甚至是服务器的某些常规网络设置(例如iptables
)吗?
PS 我试过启用http-pretend-keepalive
in haproxy
,但它不起作用。
python - Thunderpush 监控
Thunderpush是一个基于 Tornado 和 SockJS 的推送服务。它提供了一个受 Beaconpush (beaconpush.com) 启发的 HTTP API 和客户端。
我想知道如何监控使用统计数据和性能
python - Sockjs-tornado 和 rpc
我正在尝试将 sockjs-tornado 服务器添加到我的站点,并且一切正常,直到我决定通过 MsgPack(使用 msgpack-rpc-python)将它连接到我的其他应用程序。现在可以使用 sockjs 服务器或者 RPC 服务器。取决于它们中的哪一个首先开始循环。
我认为我需要为他们两个使用一个 tornado.ioloop。但不知道如何实现。或者可能有另一种方法将 rpc 添加到龙卷风服务器?
这是带有 msgpack-rpc-python 的 sockjs-tornado 示例代码:
`
欢迎任何建议或示例!
https - SockJS 在 IE9 上遇到问题
我在这里看到了类似失败的报告:https ://groups.google.com/forum/?fromgroups=#!topic/sockjs/QNtA1_p_arU ,但我的问题似乎有所不同。
我的设置:客户端连接到https://www.mysite.com/sockjs
SockJS,实际页面在https://www.mysite.com/blah/blah/blah
. 页面上的所有外部元素(例如 css 和 js)都使用https提供,包括 SockJS-Client(https://d1fxtkz8shb9d2.cloudfront.net/sockjs-0.3.js,最新版本应该是 0.3.4)。后端是用 SockJS-Tornado 制作的。
问题 1:我指定使用以下协议:
但是,似乎 IE9 只是使用了最差协议iframe-htmlfile
,正如我在服务器日志中看到的那样:
为什么不使用xdr-streaming
or xdr-polling
?在 SockJS 文档中,它在 'IE8, 9 (cookies=no)' 下标记了这两个协议,这是否意味着 SockJS 只会在浏览器禁用 cookie 时使用它们?
问题 2:使用协议iframe-htmlfile
时,用户会在页面上收到'Only Secure Content is Displayed'
警告,表明存在混合内容问题。但是,没有其他经过测试的浏览器报告此警告(例如 Chrome、FireFox、Safari),并且如前所述,页面上的每个外部资源都是通过 https 提供的。为什么是这样?它与使用的这个特定协议有关iframe-htmlfile
吗?
同时,SockJS 很难连接到服务器并发送消息。这是我在服务器日志中看到的:
最后一个错误似乎是超时。当我关闭 IE9 中的警告对话框时,连接似乎打开了,但之后没有从浏览器接收到消息(浏览器应在连接打开后立即发送消息)。我想知道这是否与之前的混合内容警告有关。
html - 同一台机器上的两个不同浏览器可以都使用 websocket 连接到服务器吗?
我在同一台机器(即相同的 IP)上有两个不同的浏览器(Chrome 和 Safari),想知道是否可以使用 websocket 将它们连接到同一台服务器?
我试过了。Chrome 连接正常,但 Safari 抛出错误,抱怨:
但我不确定这是否是由于每个 IP 地址一个 websocket 连接的某些限制?