问题标签 [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 投票
0 回答
569 浏览

java - 在 Android 上创建 Digest WebSocket 连接

正如问题所暗示的那样,我正在尝试将 Android 设备连接到带有 websockets 的 Digest 安全服务器,但我不断收到 401 Unauthorized 返回。

我已经设法使用 apache.http(它支持 Digest)向同一台服务器发布和获取,并且可以通过返回在初始请求期间收到的 cookie 来继续发送这些基本命令,但是当我发送它们时这些相同的 cookie 不起作用websocket 握手。

我已经嗅探了数据包,并且可以看到,正如预期的那样,即使成功的连接也以 401 开头,apache 库从中提取必要的信息并重新发送带有所有摘要哈希等的 Authorization 标头。这将返回一个新的、已批准的响应与我正在抓取和存储以备将来使用的 cookie 一起使用。

我的假设是,在从 http:// 地址更改为 ws:// 地址时,我需要重新进行身份验证,但我还没有找到支持身份验证的 android websocket 库,而且我发现并测试过的库不要让我看到了服务器的 401 响应(再次,通过嗅探两者之间的数据包看到它存在,并且它包含生成新摘要响应所需的所有信息,即使这意味着我自己编写它)。

任何帮助/建议将不胜感激。

我仍然有开放的相关但不成功的问题:

使用身份验证 cookie 打开 WebSocket 连接

Android 中的 Websocket 和 cookie

测试库:

高速公路

Android异步

Java-Websocket(目前正在推进)

0 投票
1 回答
2056 浏览

java - 如何在当前的 Eclipse Android 项目中导入 Gottox/socket.io-java-client api?

我正在尝试使用Socket.io编写一个在 node.js 上运行的 JavaScript 服务器,该服务器与我的 android 应用程序(java 类)的客户端通信。由于我需要结合使用 Socket.io(或任何其他有效的 websockets)框架的 JS 服务器和 java 客户端,我发现Gottox/socket-io.-java-client实现似乎可以完成这项工作。

问题:我对套接字编程和使用 Github 项目非常陌生。我尝试遵循项目中提到的简单方法,但遇到了 Eclipse 的构建错误,特别是与 WebSocket.jar 和 json-org.jar 的归档问题有关。

无法解决这个问题,当我遇到一个完全不同的错误时,我尝试将项目导入 Android Studio ,我对此非常不熟悉。

我只是想确保我一开始就在处理这个项目。这是我的客户端类的样子:

我导入了 socketio.jar 甚至 WebSocket.jar 和 json-org.jar,因为看起来这些也是需要的。任何关于我做错了什么或者我应该如何将这个库合并到我的 android 项目中的反馈都将受到高度赞赏,因为我已经花费了无数个小时来尝试调试构建问题。

注意:我使用 Android L、API 21 和 jdk1.7 来运行这个项目。

0 投票
1 回答
2300 浏览

spring - 如何为 spring websocket (JSR-356) 验证 Jetty websocket 客户端

我们在服务器端有 Spring websocket [STOMP 和 JSR] 和 Jetty websocket 客户端来与服务器通信。身份验证在浏览器上工作正常,因为我们在登录时对用户进行身份验证,我们在浏览器端有 sockjs STOMP,但我们也需要在 Jetty websocket 客户端进行身份验证。

怎么做?还有其他选择吗?

0 投票
1 回答
343 浏览

android - 使用 DDP 协议发送授权请求时连接状态关闭

我正在使用 kenyee 的Android DDP 客户端库将我的 Android 应用程序连接到运行 Meteor-JS 的服务器。

我已经修改了他的Meteor.js 派对 ANDroid Demo。我尝试使用现有用户凭据登录并收到登录错误。请帮忙!

DDPStateSingleton使用以下设置创建:

(Meteor-js 服务器在 nitrous.io 沙箱中运行)然后我执行用户登录尝试:

但我得到WebsocketNotConnectedException(它是从 抛出的org.java_websocket.WebSocketImpl#send(String))所以我的登录请求以错误消息结束

异常期间的单例状态:

奇怪的是,我看到连接已经关闭,虽然connectIfNeeded()之前被调用过。

UPD
从 DDP 服务器收到的第一个异步消息是类型error
第二个收到的异步消息是类型closed

0 投票
1 回答
1492 浏览

java - 使用 java sslSocket 与 Google 通信时未收到响应

我正在尝试使用类似于 telnet 的 java 套接字类编写一个简单的 Web 客户端。我希望用户能够与任何端口上的任何 Web 服务器自由通信。我还想为 HTTP/HTTPS 通信提供一些内置支持。我的 HTTP 部分工作得很好,但我在使用 HTTPS 时遇到了很多麻烦。

我想使用 Java 的 SSLSocket 类。我查看了很多网站和示例,并整理了以下代码来检索 Google 的主页。

当我运行代码时,我收到以下输出:

此时,代码在等待服务器响应时冻结。这种回应永远不会到来。我已经尝试过使用不同网站的类似 HTTP 请求的类似代码,它已经发回了一个 400 错误,我目前并不担心。我现在的目标是连接 Google 并从服务器获得响应。我不明白为什么我没有从服务器得到任何响应。

谢谢你的帮助!我到处寻找解决方案,但没有成功。

更新:

我尝试了 user3586195 发布的代码,效果很好!诀窍在于 receive() 方法。我需要从流中读取以表明我已准备好。感谢大家的帮助!

0 投票
1 回答
947 浏览

java - 将 websocket 连接同步到同一个端点

在我的代码中,有一个 websocket 服务器代表连接的客户端将信息保存到数据库中。

我正在使用 Jetty 9、Hibernate 和 Postgres。

本质上,当客户端通过 websocket 发布数据对象时:

  • 服务器反序列化数据
  • 根据内容检查对象是否已存在于数据库中
  • 如果找到匹配项
    • 服务器将更新数据库行,并指示该项目已存在
  • 别的
    • 服务器将创建一个新的数据库行并指示该项目已添加。

在这个系统中:

  • 端点(即 URL)对应于单个用户主体
  • 允许到同一端点的多个连接,这意味着从不同客户端到单个用户的多个连接。
  • 数据库中的数据对象特定于用户

(这意味着服务器只会检查属于用户的行是否存在已存在的项目)

这一切都运作良好,除非 2 个客户同时发布相同的数据。两个服务器实例都不知道另一个,并且数据库最终有 2 行相同,除了服务器生成的 ID。

如何防止服务器同时写入相同的数据?我不能在数据库中使用 UNIQUE 约束,因为我实际上必须支持具有相同数据的多行,但在不同时间发布。

我可以使用“session.getOpenSessions()”将所有其他会话附加到同一端点。

我可以吗:

  • 在端点上同步,不知何故?
  • 同步附加到会话的内容?
  • 用线程配置做点什么?

感谢您的任何建议。

0 投票
1 回答
930 浏览

java - 如何从 JavaScript 客户端向 Jetty WebSocket 发送请求标头

如何从 JavaScript 客户端向 Jetty WebSocket 发送请求标头?


我在做什么 ?


在客户端。

  1. 需要在客户端的请求头中添加服务名称和服务版本
  2. 发送到服务器

在服务器端。

  1. 从请求头中识别服务
  2. 使用它创建相应的输入转换器(使用 GSON)
  3. 使用该转换器创建服务输入
  4. 致电服务。

我可以使用 org.eclipse.jetty.websocket.api.annotations.WebSocket 在服务器端获取服务名称和版本。但是.....如何在客户端设置标题信息?

谢谢你的支持...

0 投票
2 回答
1615 浏览

java - JAVA:如何监听事件处理程序的调用/如何获取事件处理程序的返回结果?

我正在创建一个 Android 聊天应用程序,其中我正在使用 WebSockets,最重要的是我想创建应用程序协议的自定义实现。

我陷入了困境。

本质上,我想要的是一种方法来知道一个事件处理程序方法已在另一个类中被调用,基于此在我的类中启动我自己的方法,然后在我的类中获取该事件处理程序方法的结果。

这怎么可能?

我进行了很多研究,发现了诸如绑定、事件发射器等之类的东西。有人可以指出正确的方向并提供一些资源,我可以从中学习这种技术吗?

这是我到目前为止所做的:

我有另一个问题。我使用回调获得了 userList ......现在的问题是:

我想要 postExecute 中的 userList,以便我可以将此 userList 发送到另一个活动。我如何停止 doinbackground() 以等待回调完成。如果我使用thread.sleep,整个过程就会停止,甚至连连接都不能工作。

谢谢

0 投票
2 回答
1066 浏览

java - 我想在连接到 websocket 时显示加载动画

我试图在连接到 Web 服务器时在我的应用程序中显示动画,以便用户不会认为它已崩溃/冻结。

这是代码中可能相关的部分:

我认为这也可能有用:

webSocketClient 实际上并没有在 onCreate() 中定义,上面的方法仍然在 onCreate() 中使用。

0 投票
1 回答
879 浏览

java - Websocket server.run() 不允许后续代码启动

我有以下来自(https://github.com/TooTallNate/Java-WebSocket)的网络套接字服务器代码:

代码工作正常,但之后的所有代码server.run();都无法启动/工作!那部分我需要将消息从 Java 控制台发送到客户端。

我做错了什么?

注意:我的客户端使用 JavaScript 并可以连接到服务器