问题标签 [tyrus]

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 回答
3742 浏览

java - 使用 Java EE Websocket API 接收 ping

我目前正在使用 Java Websocket API 的 Tyrus 参考实现。我已经成功创建了一个接收二进制消息、文本消息和 pong 消息的服务器端点,但我一直试图让它接收 ping 消息。我搜索了大部分 Tyrus 源代码并阅读了 Jave EE Websocket 教程,但都没有演示接收 ping 的功能(仅用于发送它们)。有谁知道这是否是当前 API 无法实现的?如果没有,您能否指出我接收 ping 消息的正确方向?

0 投票
1 回答
1265 浏览

java - tyrus 独立客户端中的 SSL 主机名验证

我正在使用 tyrus 1.7 独立客户端连接到远程 websocket。这就像在示例中一样:https ://tyrus.java.net/documentation/1.7/user-guide.html#websocket-client-endpoint

在默认实现中,仅检查 SSL 证书链是否有效,但不关心主机名是否错误。这似乎是一个很大的安全风险。

通过HttpsURLConnection测试到 websocket 服务器的原始 HTTPS 连接(没有 websocket 升级)时,主机名和链验证按预期工作。

有没有办法在 tyrus 独立客户端中激活 SSL 主机名验证?

0 投票
0 回答
368 浏览

java - tyrus Websocket API 的奇怪行为

我正在开发一个 websocket 服务器和客户端来处理多条消息。

我将 JSON 与解码器和编码器一起使用。

由于每个端点只能有一个 @OnMessage 方法,我创建了一个名为 message 的 Marker 接口。现在我的 @OnMessage 方法作为void @OnMessage(Message message, Session session)客户端和服务器中的参数。

我正在Register_Send使用来自客户端的@OnConnect 发送对象Session.getAsyncRemote().sendObject。服务器成功读取此消息并Register_Received使用 向客户端发送对象 Session.getAsyncRemote().sendObject
两者都 Register_Send实现 Register_Received了 Message 接口。两个对象都被编码和解码为 JSON 对象。

但在客户端 void @OnMessage(Message message, Session session)方法接收 Register_Received 对象作为 Register_Send。因此,抛出异常。

我无法解决这个问题,无论是我的代码还是 Tyrus 1.7 API 的错误。

请建议我解决这个问题。

0 投票
0 回答
234 浏览

java - 我们可以在 Java Tyrus websocket API 中将观察者添加到 @Endpoint

我想将观察者添加到@Endpoint,以便其他类可以收到@OnMessage 等事件的通知。

我们可以为@Endpoint 做到这一点吗?

0 投票
2 回答
545 浏览

java - 通过 http 将文件下载到同一主机时 Websocket 阻塞

我有一个运行 Java Play Framework 2.2.1 的服务器和一个客户端应用程序,它通过 websockets 连接到服务器以通过 http 监视和下载文件。我在下载大文件时遇到问题,websockets 消息会阻塞,直到下载在连接的客户端结束。客户端使用 Java JDK8 和用于 websockets 的 Tyrus 库。

有人知道 HTTP 和 Websockets 之间是否有任何优先级(据我所知 Websockets 是通过 HTTP 包实现的)?

0 投票
1 回答
343 浏览

java - Tyrus WebSocket API 中的会话标识

我已经实现了一个 websocket 服务器,它充当某些事件的观察者。

我已经从 SomeObserver 类实现了 objectChanged()。objectChanged() 将在发生某些事件时执行。这是常见的观察者实现。

应用程序逻辑是这样的:客户端连接到 Websocket 服务器,服务器为适当的客户端发送适当的事件。

我已经这样编码了:

我从未使用过任何会话标识。但令人惊讶的是,服务器会为各个会话发送适当的消息。服务器不会在没有任何会话身份验证或标识的情况下将一个会话事件发送到另一个会话。

有谁知道在 Tyrus API 中为什么以及如何发生。我想知道 Tyrus webocket 是如何支持会话识别的。

0 投票
0 回答
1385 浏览

java - Glassfish Tyrus ServerEndpoint 实例化失败 - 如何诊断错误?

我有一个 ServerEndpoint 类,一旦我尝试从客户端连接到它,就会引发此错误。我认为缺少某种依赖关系,即缺少另一个 jar 的捆绑库,尽管它可能是其他一些问题。

我在服务器日志中看到以下堆栈跟踪,没有其他信息。

如何获得更多相关信息?我正在使用--debug 运行服务器。

我还在我的域配置中添加了以下内容以监控类加载:

是否可以进一步增加详细程度?

我正在使用最新的 Oracle Java 7 JDK 和 Tyrus 1.7 在 Linux x64 上运行 GlassFish Server Open Source Edition 4.0 (build 89)

任何想法都会受到欢迎。

端点剥离到其核心;我试图留下任何可能导致问题的东西:

好的,所以我在 Pavel 的帮助下完成了工作。

  1. Tyrus 不应包含在 WAR 中,因为这会导致类路径上的文件重复。
  2. 未链接 apache.commons.codec.binary.Base64 类(GsonPlus 需要)。

所以我的问题更具体地变成了以下问题:是否有诊断此类 CNFE 错误的非暴力方法,即无需逐个解构和重建端点

0 投票
1 回答
1185 浏览

java - 使用Java Websockets客户端向服务器发送多条消息?

我发了一条消息,它回响给我。好吧,如果我想发送另一条消息怎么办?我该怎么做?

我问的原因是因为我正在登录服务器,他们给我发回一条消息,说明我是否成功登录。

成功登录后,我想发送另一条消息,向服务器查询我需要的不同信息。

0 投票
1 回答
73 浏览

java - 对 websockets 和 java 感到困惑

我一直在看这样的教程,使用 Tyrus 的 java websockets,我看到了一个服务器实现、一个 java 客户端和一个 javascript 客户端。我期望只有一个服务器实现和一个 javascript 客户端来处理来自服务器的消息。为什么会有java客户端?如果我使用浏览器运行我的应用程序,那么我是否跳过 Java 客户端?

0 投票
1 回答
959 浏览

websocket - tyrus websocket 服务器编程端点

我正在尝试使用带有 tyrus 1.8.2 的编程端点创建一个 websocket 服务器。我发现构造函数:

不接受实现 ServerEndpointConfig 的类。当我尝试它抛出一个 DeploymentException “类 XXX 不是 ServerApplicationConfig 后代,也没有 @ServerEndpoint 注释。”

由于我使用的是编程端点(未注释),这似乎意味着我必须实现 ServerApplicationConfig。这与 websocket API 文档相反。

因此,当我实现 ServerApplicationConfig 时,我不再遇到此异常,并且服务器似乎启动没有问题,但它返回 404 我认为是有效的连接尝试(正确的主机、端口和上下文路径。)

我错过了什么?

附加信息:我扩展了 TyrusServerEndpointConfigurator 并为 modifyHandshake() 方法提供了覆盖。服务器在没有调用此方法的情况下返回 404。