问题标签 [jsr356]

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

java - 为什么 Jetty JSR356 在 checkOrigin 和 modifyHandshake 方面表现不同

我在玩 Jetty ( 9.2.3v20140905ServerEndpointConfig ) 时连接了一个 Web 套接字端点,当我遇到 Jetty 的代码以查看它是如何使用的时,我尝试使用我自己的端点。我注意到它在JsrCreator创建 Web 套接字对象时使用:

我阅读了( javax.websocket-api 1.0 )的javadoc modifyHandshakeServerEndpointConfig其中指出

由容器在形成由格式良好的握手请求产生的握手响应后调用。容器已经检查了这个配置有一个匹配的 URI ,使用checkOrigin 方法确定了源的有效性,并根据这个配置填写了协商的子协议和扩展。自定义配置可能会覆盖此方法,以检查请求参数并修改服务器已制定的握手响应。以及 URI 检查。 如果开发人员不重写此方法,则实现不会对请求和响应进行进一步修改。

以下是 Jetty 的作用:

如您所见,在调用配置器之后检查原点。在调用配置器之后修改响应。调用 WebSocketCreatoracceptWebSocket的方法:WebSocketServerFactory

之后调用:

它还通过以下方式修改响应HandshakeRFC6455

所以我没有办法只用我的配置器来修改响应,因为 Jetty 无论如何都会改变它。

在我看来,Jetty 不符合 JSR 356,即 WebSocket 的 Java API,是吗?

0 投票
3 回答
9755 浏览

java - Springboot @ServerEndPoint“找不到根 WebApplicationContext。”

我在使用带有 @ServerEndPoint 注释类的 spring 时遇到问题

我正在使用 Springboot 1.2.3,我试图弄清楚如何拥有一个端点实例

弹簧配置:

WebSocket 端点:

这是基于Spring WebSocket JSR-356 教程,但我收到以下错误:

我已经在嵌入式模式和外部 tomcat 8 和 jetty 9 下进行了测试(在外部模式下,我删除了 de Spring 配置文件),但出现了同样的错误。

我发现的唯一解决方法是创建一个自定义配置器。

它被创建为带有参数化构造函数的@Bean。

我一定错过了使用 SpringConfigurator 类完成它的东西,但我不知道是什么。

0 投票
1 回答
2210 浏览

java - IBM Websphere v8.5.5.4:Websocket 部署成功但客户端未连接

我能够在我的 Liberty 配置文件中部署一个示例 Websocket 应用程序,并且它按测试工作。然后,我尝试将相同的应用程序部署到真正的WAS v8.5.5.4(到目前为止,我知道WAS 8.5.5.4 支持 websocket)。看起来应用程序已成功部署并且可以访问网页,但 WEBSOCKET 功能无法正常工作,例如我的 Web 套接字客户端无法与服务器连接。下面的一些SystemOut.log尾部:

有什么想法或建议吗?

0 投票
1 回答
122 浏览

javascript - 基于 jsr 356 和 HTML/js 客户端的会话变量

我已经在互联网上查看了一段时间,但找不到我的问题的答案......

我正在使用服务器端的 java 和客户端的纯 HTML/javascript 构建一个 Web 应用程序。

我的想法是使用 JSR 356 实现 websocket,并且需要在整个会话期间保持一些数据(用户登录详细信息)。

问题:有没有办法在整个会话期间保持数据持久性,这样我就不需要在每次调用时再次发送它(类似于 jsp/servlet EL)?

例如

谢谢

0 投票
1 回答
1501 浏览

endpoint - 如何使用 java websockets (jsr 356) 将消息从一个端点重定向到另一个端点

我正在做一个个人项目来了解java websockets。基本上,我的 HTML 客户端通过JSR 356 websockets向我的服务器发送消息。端点@ServerEndpoint("/wsServer")接收来自客户端的所有消息,我希望在另一个门户/端点@ServerEndpoint("/wsDashboard")中实时查看这些消息作为仪表板。

我会很感激任何想法、文档或代码片段,因为我真的不知道,我见过像 apache kafka 这样的解决方案,但我不确定这是否是我需要的。

谢谢

0 投票
1 回答
669 浏览

json - 在 jsr 356 中将集合编码为 json 数组

我正在学习 websockets,我的 webapp 正在使用jsr 356 library。我按照教程进行操作,可以对 POJO 进行编码/解码,但是我找不到有关如何将数组或集合序列化为 JSON 的示例。

这就是我对数据进行编码的方法:

这就是我将数据发送到编码器的方式:

这是我得到的例外:

谁能给我一个关于如何做的提示?

谢谢

0 投票
1 回答
679 浏览

java - 如何声明我的 Java WebSocket 端点以使用和生成 JSON?

如何以声明性方式传达我需要支持 JSR 356 的 WebSocket 服务器端点来使用和生成 JSON 有效负载的信息?

如果不可能以声明方式实现,那么实现相同目标的编程方式是什么?

0 投票
0 回答
450 浏览

jakarta-ee - 为什么 Weblogic 容器不能注入 Event 对象?

首先我想说这个问题更多是关于CDI,尤其是CDI Events。容器(在我的情况下,Weblogic 12 无法注入Event对象)

问题的动机:

我正在尝试将 JMS 与 WebSocket 集成。基本上,我试图从 JMS 消费一条消息,然后引发一个事件,以便服务器端点可以接收 JMS 消息并最终通过 WebSocket 协议将其引发到浏览器。我从这个博客有了在 JMS 和 WebSocket 之间进行集成的想法。 请注意,我没有将 CDI 用于任何其他目的。. 但是当我尝试触发注入事件时,我正面临 NPE。

我的理解是,要使用CDI我需要定义 a beans.xml,即使几乎是空的。

我的beans.xml(我把这个放在我的网络应用程序的目录里面WEB-INF,我已经粘贴了下面的内容:

我的EventProducer课程如下所示:

是这样定义的Event Qualifier

事件的消费者是类onJMSMessage上的方法ServerEndpoint,相关部分粘贴在下面:

我在这里想念什么?任何指针?

0 投票
1 回答
3584 浏览

tomcat - Tomcat 在尝试同时写入 websocket 会话时抛出“远程端点处于状态 [BINARY_FULL_WRITING] ...”

我正在使用 tomcat 8.0.23 来终止我的 websocket 连接。我有以下代码来处理传入的消息:

但我得到以下异常:

看起来当我尝试同时写入同一个会话时,tomcat 正在抛出该异常。

错误来自此方法

我没想到 sendBinary 会抛出该异常,因为基于java doc

sendBinary void sendBinary(ByteBuffer 数据,SendHandler 处理程序)

抛出: IllegalArgumentException - 如果数据或处理程序为空。

所以看起来tomcat实现检查状态是否open这段代码中:

如果不是,open那么它将抛出该异常。

有趣的是,在java doc for RemoteEndpoint.Basic(not RemoteEndpoint.Async) 下,我们读到:

如果在调用发送另一个消息时,此 RemoteEndpoint 底层的 websocket 连接正忙于发送消息,例如,如果两个线程尝试同时调用发送方法,或者如果开发人员在中间尝试发送新消息发送一个现有的,在连接已经很忙时调用的发送方法可能会抛出一个 IllegalStateException。

没有这样的段落RemoteEndpoint.Async

现在的问题

RemoteEndpoint.Async.sendBinary在其他内容写入同一会话时调用会话是否不可接受?

如果不可接受,我如何在尝试写入远程端点之前检查它的状态!


更新1:

看起来在 java.net 上围绕同一问题进行了讨论。

更新 2:

链接到关于 apache bugzilla的类似错误报告。

0 投票
1 回答
2456 浏览

java - 忽略证书验证 - Tomcat8 WebSocket (JSR-356)

上面的代码是为 Jetty WebSockets 实现的,告诉 java 客户端禁用证书验证。有什么方法可以在 Tomcat8 WebSockets (JSR-356) 的 Java API 中实现相同的功能吗?

PS:我试过这个方法。它不适用于 Tomcat WebSockets 的 Secure WebSocket 连接