问题标签 [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.
java - 实现一个网络套接字
我找到了 TooTallNate 的 Java-Websocket库。我正在尝试实现客户端和服务器作为概念验证,以查看 Web 套接字是否会为我们解决问题。
我的客户端是我的 Ubuntu 12.04 Linux 工作站。我编写了一个 websocket 服务器应用程序来监听 4242 上的绑定。然后我运行我的客户端并尝试连接。我使用wireshark捕获了通信:
我的问题是,为什么包会被这么快拒绝?我不相信我正在运行防火墙,但如果它是防火墙,未注册的端口通常会在几皮秒内被忽略而不是关闭。有谁知道这意味着什么?
java - 限制 java-websocket 对本地主机的访问
我正在编写一个 java-websocket 服务器作为加密货币客户端。
出于安全原因,我想限制对本地计算机的访问。
有没有办法通过 IP 或主机名限制对 java-websocket 服务器的访问?
如果是这样,怎么做?
java - java-websocket的WebSocketServer用的是什么草案?
我无法从WebSocketServer.java 源中找出它使用的草稿。
WebSocketClient.java 可以使用 RFC 6455、Hybi 17、Hybi 10、Hixie 76 和 Hixie 75,但默认为 RFC 6455。
java-websocket的WebSocketServer用的是什么草案?
java - 如何将 WebSocket 服务器连接限制为只有一个?
为了创建 WebSocket 服务器,我使用了Java-WebSocket库。它看起来像这样,并且正在工作。
但现在我想升级,所以服务器只能有一个活动的客户端连接。
是否有某种选项可以执行此操作,或者我应该检查所有连接并关闭所有非第一个活动连接?
我试过这样:
但这会关闭所有连接,并杀死 Websocket 服务器。我究竟做错了什么?
android - Socket.io android 库发送方法
我正在尝试使用 socket.io https://github.com/koush/AndroidAsync#androidasync-also-supports-socketiolibrary库并尝试使用 webSocket.send("a string"); 通过使用 AsyncHttpClient 创建一个新的 Web 套接字。并通过字符串回调发送字符串。但它不工作?
谁能告诉我它的正确用法,因为 ReadMe.txt 没有更新。
java - WebSockets 是数据报还是流式传输?
我试图通过限制传入消息的大小来强化java-websocket服务器免受 DoS 攻击。
我在 C 套接字的接收缓冲区上发现了这个很棒的问答(我认为这是限制大小的方法,因为我找不到其他任何东西)。其中,它说有两种类型的套接字:数据报和流。
答案说数据报套接字只是切断任何多余的字节,这对我的目的来说很好,因为不完整的消息是不正确的,并且会导致发件人被列入黑名单。
我现在正在尝试确定 WebSocket 是数据报还是流式传输。因为它们使用“帧”,所以它们似乎是数据报,但我不知道。那是对的吗?
如果它们可以流式传输,如何将 java-websocket、客户端和服务器配置为使用数据报,如果这甚至是合适的?是否可以检测到带有数据报的过大消息?
如果流式传输更合适,如何检测过大的消息?
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()
。
java - 如何防止一个值强引用它的键?
一个比我优秀得多的程序员告诉我,他WebSocket
在WeakHashMap
. 我自己查看了该地图,它看起来很完美,因为连接将关闭,而负责保持地图的线程不会立即意识到,从而允许对关闭的连接进行垃圾收集。
在文档中,我注意到“WeakHashMap 中的值对象由普通的强引用保存。因此应注意确保值对象不会直接或间接地强引用它们自己的键,因为这会阻止密钥被丢弃。”。
这是否意味着一个值根本不应该引用它的或任何其他键,WeakHashMap
以免阻止垃圾收集?
值对它的键的强引用究竟是如何产生的?
例如,我需要保存与密钥(连接)关联的 IP 和 DNS 地址列表。我如何确保那些不是对密钥的强引用InetSocketAddress
then InetAddress
?
java - java websockets中的System.out.println
java websockets 中的 System.out.println 不起作用。
我的目标是用户连接它应该首先发送“欢迎”,然后必须开始聊天。
这是 tomcat7 websockets 聊天示例:
但它没有向用户打印“欢迎”。
帮我。
playframework - 服务器上的 WebSocket 连接状态
我正在使用 Play Framework 2.2.1 来处理 WebSocket 连接。
通常,当连接被客户端有意关闭(通过调用 close 函数)或被不需要的事件(例如客户端崩溃)关闭时,将调用以下 onClose 函数。
这里的问题是,有时,在发生不需要的事件时,不会调用 onClose 回调。从服务器的角度来看,客户端看起来仍然是连接的。处理这个问题的最佳方法是什么?我应该像每一秒一样 ping 客户端以查看他是否在线,或者可能是从客户端到服务器的 ping?