问题标签 [em-websocket-client]

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.

0 投票
0 回答
173 浏览

ruby-on-rails - EventMachine::WebSocketClient.connect 导致 onclose 在服务器端触发

我的 Rails 应用程序包含三个部分:

  • 侦听 HTML5 Web 套接字 ( em-websocket )的部分
  • 一段连接到它们的 JavaScript
  • 还有一部分任务是从同一个 Web 应用程序(em-websocket-client)内部连接到这些套接字(是的,我正在尝试在 Phusion Passenger 环境中做一些 IPC)

JavaScript 代码连接良好,Web 套接字服务器对这样的客户端很满意,但是当我从em-websocket-client一个奇怪的事情连接时发生了:onclose正在调用处理程序而不调用onopen,而且 - 它被称为已由 Web 浏览器打开的套接字,不是em-websocket-client

相同的em-websocket-client代码,当通过命令行在单独的 Ruby 脚本中执行时,按计划工作。这是em-websocket-client代码示例:

onclose一旦EventMachine::WebSocketClient.connect在客户端执行,服务器端就会被调用。它甚至没有@conn.disconnect来电。

我可以推测的另一件事是,这种行为是由于EventMachine服务器和客户端在同一个 Rails 应用程序中使用了相同的机制。

0 投票
0 回答
181 浏览

java - android websocket websocketnotconnected错误

我在我的 android 应用程序中使用了 Java-WebSocket ( https://github.com/Davidiusdadi/Java-WebSocket ) 客户端。

我正在录制音频文件并使用 websocketclient 和 Draft 17 将其发送到服务器。

我的音频文件是 500 kb = 500000 字节。我将其拆分为 1000 字节的字符串。

所以我有500个字符串。我在异步任务的循环中将其作为 Json 发送到服务器。

在我调用 websocketclient.send 时发送了几条消息后,我收到一个异常,说 websocketnotconnected 并且还没有触发 onclose 或 onerror。

有时它可以正常工作。

是否有适用于上述任务的这个或任何其他 android websocket 库的解决方案。

0 投票
0 回答
32 浏览

ruby - 带有 em-websocket 的 Ruby 广告牌

我尝试构建一个广告牌,用于在服务器使用 sinatra 启动的浏览器中显示消息。在服务器代码中最明显的事情是这样的:

服务器:

索引.haml

应用程序.js

但是文本在最后一次睡眠后立即显示在浏览器中,因此只有最后一行可见。建立连接后,我似乎无法从服务器端发送内容,只能作为对传入消息的反应。

因此,我使用如下所示的 Ruby 客户端进行了尝试,但每次发送文本时都必须建立新连接,将循环放在 .callback 或 .stream 方法中不起作用。

我相信必须有更好的方法来实现这一点,请问哪种方式?

0 投票
0 回答
260 浏览

java - Jetty Websocket Client WebSocketAdapter - 字节数组内存使用问题

我正在使用最新的 Jetty websocket 客户端,并且我有一个简单的客户端应用程序来接收来自服务器的视频流。该流使用大约 1 MB 的二进制块作为服务器推送发送。作为客户端套接字,我只是扩展了 Jetty 的 WebSocketAdapter 类,我的套接字中接收服务器推送的相关部分是:

由于客户端代码用于负载测试,因此我不会进一步处理数据,我只是希望数据会被代码丢弃。此外,为了模拟几个客户端,我创建了几个 WebSocketClient 实例和关联的套接字。

运行客户端时,java进程内存使用量不断增加,最终导致OutOfMemory的情况。我试图分析堆转储,我看到以下内容:

堆转储

所以我的问题是,为什么字节数组使用的内存没有清理干净?内存消耗只是不断增长和无限增长。我可以做些什么来自己清理代码中的数组吗?

0 投票
0 回答
446 浏览

java - 使用 WebSocketClient 的简单聊天应用程序

我正在尝试学习如何通过 android 中的 websocket 建立连接。我正在尝试使用 websocket 客户端向服务器发送消息,然后尝试在屏幕上查看它。

我可以启动应用程序,但是当我键入消息然后单击发送按钮时,我收到以下错误:org.java_websocket.exceptions.WebsocketNotConnectedException

这是我的 MainActivity 类:

这是 WebClient 类:

公共类 WebClient 扩展 WebSocketClient {

这是单击发送按钮后的 logcat:

--------- 崩溃开始 10-30 20:09:50.830 2682-2682/example.com.chatapp E/AndroidRuntime: FATAL EXCEPTION: main Process: example.com.chatapp, PID: 2682 org. java_websocket.exceptions.WebsocketNotConnectedException at org.java_websocket.WebSocketImpl.send(WebSocketImpl.java:566) at org.java_websocket.WebSocketImpl.send(WebSocketImpl.java:543) at org.java_websocket.client.WebSocketClient.send(WebSocketClient.java: 171) 在 ziad.example.com.chatapp.MainActivity$1.onClick(MainActivity.java:60) 在 android.view.View.performClick(View.java:5637) 在 android.view.View$PerformClick.run(View. java:22429) 在 android.os.Handler.handleCallback(Handler.java:751) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:154) 在android.app.ActivityThread.main(ActivityThread.java:6119) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 在 com.android.internal.os.ZygoteInit.main( ZygoteInit.java:776)

0 投票
0 回答
214 浏览

python - 是否有可能在 time.sleep\wait 期间错过 WebSocket 事件?

在同步运行的程序中,是否有可能在 time.sleep \ wait 函数或程序加载期间错过 websocket 事件?

例子:

  1. 服务器发送事件 #1 触发了一些繁重的处理。为了这个例子,我们假设它是一个简单的“等待\睡眠”函数,持续 10 秒。
  2. 在此期间,服务器发送事件 #2。

客户会在 10 秒后收到此事件 #2 吗?服务器可以查看客户端是否准备好接收下一个事件吗?

我正在使用 python - 和 websocket-client 从 websocket 服务器接收消息。

0 投票
1 回答
716 浏览

android - 在应用程序生命周期Android上保持套接字连接打开

我想在我的应用程序处于前台时打开一个套接字。我从这里使用 JAVA Api WebSocketClient:

所以我创建了一个管理器,它使用 onOpen、onClose、onMessage 和 onError 回调实现 WebSocketClient 接口,如下所示。我还有一个 pingPongTimer,所以我可以每隔 10 秒检查一次连接。该过程的周期是在应用程序生命周期中绑定的,所以当应用程序进入前台时我调用connect and startPingPongTimer方法,而当它进入后台时调用kill and stopPingPongTimer方法。WSS url 是来自 Amazon Web Services 的 webSocket。我的问题是,有时我调用 connect 方法,但我从来没有得到 onOpen 回调。我有时也会在断开连接并重新连接后收到 onClose 回调,因此我无法处理当前连接,因为我从前一个连接中获得了 onClose。

用于我的目的的最佳方式或库是什么,或者我怎样才能使它更可靠、高效和稳定?谢谢

0 投票
1 回答
47 浏览

javascript - Socket.Io 事件多次命中

index.js

'recieve_message' 事件被多次点击,但它必须点击一次,而点击按钮发送功能工作正常,但在接收消息时它被多次点击不知道为什么,因为我是 socket.io 的新手,可能是我在做小错误。任何帮助将不胜感激

0 投票
0 回答
292 浏览

python - Websocket客户端未在python中连接

我尝试了一个从 binance 收集信息的代码,但是当我运行它时,连接没有打开,输出只显示“关闭的连接”。这是因为 Visual Studio 代码 2 的任何防火墙还是我应该添加任何代码?请高手指点,谢谢!

我的代码如下所示

我的输出只是关闭连接,如下所示。

0 投票
0 回答
26 浏览

python - websocket-client 不适用于 Python3/VSCode

我正在尝试在 Windows 10 上使用带有 VSCode 的 Python 3.10 中的 websocket-client 包。我能够在带有 Python 3.10.1 的 Ubuntu 20.04 VM 上运行完全相同的代码

这是我的 websocket 客户端版本:

我得到错误:

这是代码:(这不是我正在处理的,但我尝试了示例代码,但它仍然没有工作)