问题标签 [autobahn]
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.
python - 对等 python websocket 重置连接(ErrNo 104)
我正在运行 Autobahn WS 服务器,并使用 Python websocket-client ( https://pypi.python.org/pypi/websocket-client/ ) 从客户端连接到它。
我的客户端代码非常简单:-
这可以正常工作一段时间,但后来我看到了错误:-
错误:[Errno 104] 对等方重置连接
环顾四周,似乎与某种超时错误有关。谁能建议如何解决这个问题?
更新
只是为了确认服务器端,WS 服务器只是使用 Autobahn 文档中的股票“广播”示例 - https://github.com/tavendo/AutobahnPython/blob/master/examples/websocket/broadcast/server.py。因此,从客户端接收到的消息只会回显给所有连接的客户端。
更新2
感谢您的调试提示。我运行了这个,当错误发生时,这是调试跟踪的输出:-
为什么连接断开了?该错误可以重现,并在大约 10 分钟后发生。每次运行相同的时间(约 5 小时)。
javascript - 在 requirejs 中正确加载依赖项(autobahn 和 whenjs)
在过去的几个小时里,我一直被困在这个问题上。我正在尝试让 autobahnjs 和 whenjs 由 requirejs 正确加载。
Autobahnjs 依赖于 whenjs。所有文件都已加载(并以正确的顺序)。但是什么时候总是不确定的。我完全不知道我做错了什么。我已经尝试了各种方法来解决它。如果这有助于任何人复制问题,我也有一个bower.json文件。提前致谢。
编辑:Autobahnjs 目前不支持 AMD。然而,Whenjs 确实支持它。
python - 我如何在扭曲的高速公路上使用不同的网址?
我需要类似龙卷风的东西。每个 url 的每个 Websocket 处理程序。例如,我有不同的 url:ws://localhost/url1、ws://localhost/url2,我需要为它们每个单独的处理程序。是否可以?我尝试在 WebSocketServerFactory 中设置 url,但没有成功。
callback - 然后在高速公路js中没有调用调用方法
然后不在此脚本中运行。websocket 服务器上的调用函数运行良好。
javascript - 在单个 Javascript 函数中处理多个 websocket 订阅,但只有一个连接对象
注意:我将Autobahn.js用于客户端 WAMP 实现,而when.js用于承诺。
我正在尝试创建可重用的代码,以便只存在一个 websocket '会话'或连接,并且每当开发人员想要使用高速公路订阅主题时,他们可以使用当前连接对象来执行此操作,如果它已经存在;否则创建一个新的。
我的问题是,如果连接已经存在,我必须使用 asetTimeout()
等待一秒钟以确保它实际连接,然后复制所有订阅代码 - 我根本不喜欢这样。
这是我当前的代码:
伟大的。现在的问题是,如果我subscribeTo()
在前一个之后还有另一个呢?连接将不再存在null
,但也不会连接。所以以下是我必须做的:
删除setTimeout()
,您会收到一条错误消息,提示“Autbahn 未连接”。
有没有更好的方法来拥有一个单一的、可重用的连接,而不需要重复代码,或者我注定要因为承诺而为每个订阅创建一个新连接(也许我可以在这里使用承诺来发挥我的优势,尽管我没有在此之前没有使用过它们)?
javascript - 将 AutobahnJS (WebSockets) 与 Backbone 解耦
我有一个具有简单搜索表单的主干应用程序,当用户在此搜索中写一些东西时,我使用高速公路订阅搜索表单上的给定文本(例如 - 我搜索“foo”,我订阅“foo”)。
如何分离高速公路逻辑?目前在我看来,当用户点击提交时,我会做接下来的事情 -
在我看来,我在我的收藏中听“添加”,并为每个结果创建一个视图并渲染它。
我认为我的代码结构不正确 -
1.“SearchFeed.subscribe”是否在正确的位置?我可以在我的视图中执行此代码吗?也许它应该在模型上?
2. 集合更改(传递给订阅,SearchFeed 更改它然后收听“添加”)管道是正确的方法吗?
javascript - 使用 AutobahnPython 的 Twisted Perspective Broker
我已经离开了我的舒适区,我有点困惑我应该如何登录。
Autobahn 提供了一种使用 RPC 调用 Python 服务器的方法,但是 Twisted 似乎只提供了有关如何将 Twisted 用于客户端的文档。
为了正确解释我的意思,这是代码:
在 Javascript 中,您可以像这样调用 RPC 函数:
sess.call(url, user, pass)
Python客户端代码:
Python服务器代码:
基本上我只需要找出如何通过 RPC 使登录调用在 Javascript 中可访问,但我不知道如何做到这一点,谷歌没有为我提供任何选项。
node.js - WAMP.ws:如何管理安全和隐私?
我正在使用 WAMP.ws 规范在我的网站上设计公共/私人用户聊天室。
当我尝试保留所有已连接用户的列表时,我的问题就出现了。我能做什么:
- 所有用户都订阅“/contacts/connections”主题。
- 当用户连接时,他会发布带有“user_id”参数的“hello”消息,告诉其他用户他已连接。
--> 但是我怎样才能信任用户呢?任何用户都可以发送带有随机“user_id”参数的“Hello”消息。
对我来说,服务器必须在广播消息之前进行一些检查。但它是否符合 WAMP.js 规范?我读过发布的消息总是由服务器广播。
另一种解决方案可能是使用 RPC 调用来连接用户。实际上,我这样做是为了验证用户。但是服务器可以自己广播一个事件到主题“/contacts/connections”吗?(在 RPC 调用之后,而不是在“发布”消息之后)我已经读到事件只是来自客户端的“发布”的直接结果。此外,这不会阻止普通用户发送事件跟踪“/contacts/connections”主题,该主题将由服务器广播。
我觉得我的两个解决方案(在广播之前检查发布的消息,或者在 RPC 调用之后由服务器广播事件)都违反了 WAMP.js 规范。我错了吗 ?
谢谢
python - AutobahnPython 服务器 HTML5 前端
我有这个 AutobahnPython 服务器启动并运行良好。 https://github.com/tavendo/AutobahnPython/blob/master/examples/websocket/streaming/streaming_server.py
我想附加一个 HTML5 前端来捕获网络摄像头视频和音频。如何让 HTML5 Blob 通过我刚刚在 HTML5 中创建的套接字发送到我也在运行的 python 套接字服务器?
python - 如何使用 Twisted(或 Autobahn)连接到 socket.io 服务器?
我正在尝试找出一种使用 Python Twisted 客户端连接到 socket.io (node.js) 服务器的方法。服务器是我没有写的聊天服务器,所以我无法控制它。我尝试了一些东西,主要是 TCP 连接,但我认为我需要使用 Websockets 接口才能成功通信。
只是为了测试,我使用了 socket.io 教程中的代码,http: //socket.io/#how-to-use用于服务器。
对于客户端,我使用了本教程http://autobahn.ws/python/tutorials/echo/中的示例代码:(我知道回调不匹配,但我只想看看它是否会先连接,哪个它没有)。
这只是看它是否会连接。问题是,socket.io 服务器说:
destroying non-socket.io upgrade
,所以我猜客户端没有发送正确的 UPGRADE 标头,但我不确定。
我是否遗漏了什么,或者不同库的 Websocket 实现不同,我需要做一些挖掘才能让它们通信?我有一种感觉,这应该很容易。我的问题是,我要在客户端上进行什么更改才能连接(成功完成握手并开始接受/发送帧)?
最后,我想使用 Twisted,但我愿意接受其他建议。我知道最直接的方法是制作一个 socket.io 客户端,但我只知道 Python。
编辑:
我认为这是 socket.io 不想让非 socket.io 连接连接,这有点奇怪。如果有人知道解决方法或任何想法,请分享。