问题标签 [java-websocket]

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 投票
1 回答
195 浏览

java - 实现一个网络套接字

我找到了 TooTallNate 的 Java-Websocket库。我正在尝试实现客户端和服务器作为概念验证,以查看 Web 套接字是否会为我们解决问题。

我的客户端是我的 Ubuntu 12.04 Linux 工作站。我编写了一个 websocket 服务器应用程序来监听 4242 上的绑定。然后我运行我的客户端并尝试连接。我使用wireshark捕获了通信:

我的问题是,为什么包会被这么快拒绝?我不相信我正在运行防火墙,但如果它是防火墙,未注册的端口通常会在几皮秒内被忽略而不是关闭。有谁知道这意味着什么?

0 投票
2 回答
1073 浏览

java - 限制 java-websocket 对本地主机的访问

我正在编写一个 java-websocket 服务器作为加密货币客户端。

出于安全原因,我想限制对本地计算机的访问。

有没有办法通过 IP 或主机名限制对 java-websocket 服务器的访问?

如果是这样,怎么做?

0 投票
1 回答
4705 浏览

java - java-websocket的WebSocketServer用的是什么草案?

我无法从WebSocketServer.java 源中找出它使用的草稿。

WebSocketClient.java 可以使用 RFC 6455、Hybi 17、Hybi 10、Hixie 76 和 Hixie 75,但默认为 RFC 6455

java-websocket的WebSocketServer用的是什么草案?

0 投票
1 回答
1423 浏览

java - 如何将 WebSocket 服务器连接限制为只有一个?

为了创建 WebSocket 服务器,我使用了Java-WebSocket库。它看起来像这样,并且正在工作。

但现在我想升级,所以服务器只能有一个活动的客户端连接。
是否有某种选项可以执行此操作,或者我应该检查所有连接并关闭所有非第一个活动连接?

我试过这样:

但这会关闭所有连接,并杀死 Websocket 服务器。我究竟做错了什么?

0 投票
1 回答
1732 浏览

android - Socket.io android 库发送方法

我正在尝试使用 socket.io https://github.com/koush/AndroidAsync#androidasync-also-supports-socketiolibrary库并尝试使用 webSocket.send("a string"); 通过使用 AsyncHttpClient 创建一个新的 Web 套接字。并通过字符串回调发送字符串。但它不工作?

谁能告诉我它的正确用法,因为 ReadMe.txt 没有更新。

0 投票
1 回答
1316 浏览

java - WebSockets 是数据报还是流式传输?

我试图通过限制传入消息的大小来强化java-websocket服务器免受 DoS 攻击。

在 C 套接字的接收缓冲区上发现了这个很棒的问答(我认为这是限制大小的方法,因为我找不到其他任何东西)。其中,它说有两种类型的套接字:数据报和流。

答案说数据报套接字只是切断任何多余的字节,这对我的目的来说很好,因为不完整的消息是不正确的,并且会导致发件人被列入黑名单。

我现在正在尝试确定 WebSocket 是数据报还是流式传输。因为它们使用“帧”,所以它们似乎是数据报,但我不知道。那是对的吗?

如果它们可以流式传输,如何将 java-websocket、客户端和服务器配置为使用数据报,如果这甚至是合适的?是否可以检测到带有数据报的过大消息?

如果流式传输更合适,如何检测过大的消息?

0 投票
1 回答
4105 浏览

java - ConcurrentHashMap 内存管理还是替代方案?

java-websocket WebSocketClientsConcurrentHashMap作为值的内存不断增长。

我已将其隔离到尝试每秒重新连接到对等方白名单的代码部分。我已经测试过在连接失败后是否正确删除了条目,并且确实如此。我还查看了所有我能找到的“concurrenthashmap memory leak”。

我不知道如何实施这种可能的解决方案。该解决方案是否解决了问题?如果是这样,请提供示例代码。

我试图实施这个建议

我认为这在一定程度上减缓了增长率,但我不知道如何调整它。这通常是正确的方法吗?如果是这样,请提供示例代码。

我也尝试HashTable按照这里的建议切换到 a ,但我ConcurrentModificationExceptions立即得到了,所以我认为这已经结束了。

ConcurrentHashMap当每秒快速插入和删除数千个条目时,如何管理此实现的内存?如果不能,是否有替代方案?


通过引用而不是通过副本传递

我添加了HashMap存储 a 的 a new WebSocket,并且只有当它不存在时才能重新尝试连接以及ConcurrentHashMap.

这极大地改善了内存管理,但它仍然有一点泄漏,大约每 5 秒泄漏 0.1 MB,大约每秒尝试 5 次。

这是我的代码、WebSocket“析构函数”还是ConcurrentHashMap对已删除值的管理的问题?


死了Object吗?

增长率再次大大降低,因为我remove()ConcurrentHashMap之前调用close()WebSocketClient然后最后remove()HashMap.

WebSocketClient在被关闭并从两个地图中删除后,如何以及为什么仍然会徘徊?


System.gc();

泄漏率再次大大降低!

我叫它之后remove()

0 投票
1 回答
47 浏览

java - 如何防止一个值强引用它的键?

一个比我优秀得多的程序员告诉我,他WebSocketWeakHashMap. 我自己查看了该地图,它看起来很完美,因为连接将关闭,而负责保持地图的线程不会立即意识到,从而允许对关闭的连接进行垃圾收集。

文档中,我注意到“WeakHashMap 中的值对象由普通的强引用保存。因此应注意确保值对象不会直接或间接地强引用它们自己的键,因为这会阻止密钥被丢弃。”。

这是否意味着一个值根本不应该引用它的或任何其他键,WeakHashMap以免阻止垃圾收集?

值对它的键的强引用究竟是如何产生的?

例如,我需要保存与密钥(连接)关联的 IP 和 DNS 地址列表。我如何确保那些不是对密钥的强引用InetSocketAddressthen InetAddress

0 投票
1 回答
267 浏览

java - java websockets中的System.out.println

java websockets 中的 System.out.println 不起作用。

我的目标是用户连接它应该首先发送“欢迎”,然后必须开始聊天。

这是 tomcat7 websockets 聊天示例:

但它没有向用户打印“欢迎”。

帮我。

0 投票
1 回答
1577 浏览

playframework - 服务器上的 WebSocket 连接状态

我正在使用 Play Framework 2.2.1 来处理 WebSocket 连接。

通常,当连接被客户端有意关闭(通过调用 close 函数)或被不需要的事件(例如客户端崩溃)关闭时,将调用以下 onClose 函数。

这里的问题是,有时,在发生不需要的事件时,不会调用 onClose 回调。从服务器的角度来看,客户端看起来仍然是连接的。处理这个问题的最佳方法是什么?我应该像每一秒一样 ping 客户端以查看他是否在线,或者可能是从客户端到服务器的 ping?