问题标签 [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 回答
2930 浏览

java - tyrus websocket ssl 握手失败

我使用 tyrus websocket 连接到服务器做了我能做的一切。

我希望有人知道原因并告诉我解决方案或意见。

我使用“tyrus-client websocket”

用户指南是这样的;https://tyrus.java.net/documentation/1.9/user-guide.html#d0e1149

但它来了 SSL Handshake has failed 异常。

我在客户端和服务器上使用了相同的密钥库。我也尝试使用 setHostVerifier 方法返回全部 true。

我也尝试了这些库的另一个版本..

但显示异常

错误

客户网站

0 投票
0 回答
1889 浏览

java - Tyrus websocket 握手错误

我在用

编译组:'org.glassfish.tyrus.bundles',名称:'tyrus-standalone-client',版本:'1.13'

我的服务器已启动并正在运行,但我的客户端有时无法连接。出现以下错误。这是一个聊天应用程序。

代码

0 投票
1 回答
390 浏览

java - Java Tyrus WebSocket 客户端 @OnMessage 方法在“不同”对象上被调用

我使用Tyrus创建了一个 WebSocket 客户端。

问题发生在带@OnMessage注释的实例方法中。

在封闭类中,我有三件事似乎都有冲突的实例上下文。

  1. 我在父类中有一个 Logger 实例。gettergetLogger()返回有效的记录器实例。
  2. LinkedList用于排队消息的对象。这会引发 NullPointerException 并且是核心问题。
  3. 封闭的实例对象。

通过我在构造函数中的调试,当我登录this.getLogger().info(this.toString());并返回正确的包、带有@hashCode() 的类名。

但是当我在 processMessage() 方法中记录它并返回一个完全不同的 hashCode() 时。

根据我的研究,基于对象的类上的 hashCode 应该返回完全相同的 hashCode。

这让我相信 processMessage 是在重复(复制)对象或类似对象上调用的。

任何帮助都会很棒。

0 投票
1 回答
596 浏览

websocket - Tryus websocket 客户端 - 尽管连接成功,但未调用 onMessage

我使用 成功连接到本地 websocket 服务器tyrus,但onMessage没有调用该方法。我将 Fiddler 设置为中间的代理,我看到服务器用两条消息响应,但是,它们没有在我的代码中打印出来。我或多或少地修改了示例代码:
消息onOpen被打印出来

Fiddler 中的 Web Socket 响应

0 投票
2 回答
811 浏览

java - 无法将传入缓冲区大小设置为 Tyrus 客户端

我试图通过 WebSocket 传输大于 4M 的文件。我正在使用org.glassfish.tyrus:tyrus-server:1.13.1org.glassfish.tyrus:tyrus-container-grizzly-server:1.13.1作为依赖项。

默认情况下,传入缓冲区大小约为 4M(请参阅:8.4. 传入缓冲区大小)。文档清楚地说明了如果我想增加文件大小但仍然无法更改传入缓冲区大小需要做什么。这是我正在尝试做的事情的本质:

但我仍然有同样的错误:

我尝试调试 Tyrus 项目,发现incomingBufferSize变量实际上保持默认值。

有谁知道我该如何解决这个问题?

0 投票
1 回答
784 浏览

java - Java8 安全 WebSocket 握手问题(Tyrus 和 Jetty)

我正在尝试在支持通过 SSL 进行安全传输的应用程序中实现 WebSocket 客户端。该应用程序已经通过实现自定义密钥和信任管理器(这些自定义实现在需要时提示用户提供证书)来支持基于 HTTP 的标准 SSL 连接。

我无法与我们的远程 WebSocket 端点建立安全连接。握手期间发生故障。我尝试了两种不同的 WebSocket API 实现(Tyrus 和 Jetty),都以同样的方式失败,当然,这让我指出了我们的 SSL 实现。

正如我所提到的,失败发生在握手期间。似乎连接无法确定存在由服务器返回的受支持机构签署的客户端证书。我很难弄清楚我是否没有正确地向 WebSocket API 提供客户端证书,或者我们的自定义密钥/信任管理器是否已经被使用。

这是 SSL 调试日志的转储:

我在我们的 TrustManager 实现中设置了断点,以确定它们是否被调用过,并且似乎此时它们没有被调用。

几天来我一直在尝试调试它,并且已经没有东西可以尝试了。

任何建议将不胜感激!

这是码头代码的片段:

0 投票
0 回答
625 浏览

java - 无法在 glassfish 服务器上部署 Tyrus 应用程序

我正在尝试通过 glassfish 上的 EJB 运行 tyrus websocket 服务器。似乎是某种版本冲突,bean 未能部署。这是例外:

我正在使用 Embedded-glassfish-maven-plugin 在 IDE 中运行。Tyrus maven 库如下:

有人能告诉我 glassfish 中哪个库有冲突吗?

0 投票
0 回答
166 浏览

osgi - 在 Glassfish 上将 Tyrus websocket 部署为 OSGI 包时出现异常

我已经独立运行了 tyrus websocket 服务器并且没有任何问题,但是当我部署 OSGI 捆绑包并尝试从 bundleActivator 类启动 tyrus 服务器然后出现异常,否则当我在本地运行 tyrus 服务器时它运行没有任何问题。这是我部署捆绑包时的一个例外:

有人能告诉我为什么 tyrus 没有从 OSGI 中的 bundleActivator 类开始的原因吗

0 投票
1 回答
1826 浏览

java - Spring Websocket 服务器在发送大量数据时重置连接

我在尝试从 Spring Websocket 服务器(托管在 Tomcat 上)发送数据时遇到问题,它似乎在尝试发送消息的过程中重置了连接。当发送大量二进制数据(此处示例中为 5526584 字节)时,该错误似乎发生得更多,但我已经看到它发生在文本通道上并且数据也较少。然而,发送超过 5 个左右的 MB 似乎会相对一致地使其崩溃。

编辑 - 结束编辑块下方是服务器端代码和错误。我现在相信错误是在服务器端引起的。我输入了一些时间戳,客户端似乎在服务器抛出错误之前收到了 onClose 错误。最接近的原因是缓冲区溢出。这是我设置 websocket 容器并启动会话的代码:

我稍后打印出会话 MaxBuffer 大小,它们都按预期设置为 128000000。

结束编辑

这是堆栈跟踪:

在我的 websocket 配置器中,我设置了非常松散的缓冲区和超时

我还为 SubProtoclHandler 设置了限制

最后导致错误的实际发送看起来像这样

代码中有很多移动的部分,所以如果您需要任何其他信息,请告诉我。

0 投票
1 回答
818 浏览

jakarta-ee - Tyrus websocket:IllegalStateException 无法为非异步请求设置 WriteListener

我有一个基于 Tyrus 实现的标准 websocket 端点,它有时会触发java.lang.IllegalStateException: Cannot set WriteListener for non-async or non-upgrade request. 我们在 Payara 4.1 上运行。

我的标准实现

抽象类在哪里

非法状态异常

到目前为止,没有什么特别的。我可以完美地沟通和响应我收到的请求,并且,websocket FTW,我可以推送信息并取回反馈。但是,我有时会收到异常:

第二次 sendMessage 方法尝试

起初,我认为我的异步端点配置错误,所以我尝试了 Future<> 方式而不是回调方式:

我也有例外。

到目前为止和症状

令人惊讶的是,我只发现一个链接谈论这个问题。

  1. github 链接突出显示了缓冲区大小问题。我不使用部分消息,只使用完整消息。此外,无论我使用默认缓冲区大小还是设置新缓冲区,都会出现异常
  2. 我找不到关于如何重现错误的全局规则
  3. 引发异常后,客户端可以继续发送消息,服务器会处理它,但服务器从未回复客户端。传出通信通道似乎被阻塞
  4. 由于服务器一直在处理传入的消息,异常后websocket通道没有关闭

挖掘 Tyrus 的实现

我浏览了 tyrus-core 的实现,发现发送方法依赖于一些 Grizzly 组件。我对灰熊一无所知,但由于灰熊的一些限制,发送似乎无论如何都必须是同步的

问题

  1. 有人遇到过这种情况吗?如果是,异常是否真的意味着某处存在瓶颈,或者它意味着其他什么?
  2. tyrus 异步端点真的是异步的,即像“处理后忘记”吗?
  3. 我还没有找到任何方法来排队和传出消息:如果消息 A 很长,请在发送消息 B 之前等待消息 A 发送完成。有没有办法在 websocket 中处理大消息或异步端点是唯一的方式?
  4. 我想确保发送没有遇到任何问题,因此我选择了异步解决方案。我应该回到同步方式吗?

我没有详细说明我的 Tyrus 调查。如果您觉得它相关,请随时询问,我会很乐意发展。