问题标签 [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.
java - 为什么 Jetty JSR356 在 checkOrigin 和 modifyHandshake 方面表现不同
我在玩 Jetty ( 9.2.3v20140905ServerEndpointConfig
) 时连接了一个 Web 套接字端点,当我遇到 Jetty 的代码以查看它是如何使用的时,我尝试使用我自己的端点。我注意到它在JsrCreator
创建 Web 套接字对象时使用:
我阅读了( javax.websocket-api 1.0 )的javadoc modifyHandshake
,ServerEndpointConfig
其中指出:
由容器在形成由格式良好的握手请求产生的握手响应后调用。容器已经检查了这个配置有一个匹配的 URI ,使用checkOrigin 方法确定了源的有效性,并根据这个配置填写了协商的子协议和扩展。自定义配置可能会覆盖此方法,以检查请求参数并修改服务器已制定的握手响应。以及 URI 检查。 如果开发人员不重写此方法,则实现不会对请求和响应进行进一步修改。
以下是 Jetty 的作用:
如您所见,在调用配置器之后检查原点。在调用配置器之后修改响应。调用 WebSocketCreatoracceptWebSocket
的方法:WebSocketServerFactory
之后调用:
它还通过以下方式修改响应HandshakeRFC6455
:
所以我没有办法只用我的配置器来修改响应,因为 Jetty 无论如何都会改变它。
在我看来,Jetty 不符合 JSR 356,即 WebSocket 的 Java API,是吗?
java - Springboot @ServerEndPoint“找不到根 WebApplicationContext。”
我在使用带有 @ServerEndPoint 注释类的 spring 时遇到问题
我正在使用 Springboot 1.2.3,我试图弄清楚如何拥有一个端点实例
弹簧配置:
WebSocket 端点:
这是基于Spring WebSocket JSR-356 教程,但我收到以下错误:
我已经在嵌入式模式和外部 tomcat 8 和 jetty 9 下进行了测试(在外部模式下,我删除了 de Spring 配置文件),但出现了同样的错误。
它被创建为带有参数化构造函数的@Bean。
我一定错过了使用 SpringConfigurator 类完成它的东西,但我不知道是什么。
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尾部:
有什么想法或建议吗?
javascript - 基于 jsr 356 和 HTML/js 客户端的会话变量
我已经在互联网上查看了一段时间,但找不到我的问题的答案......
我正在使用服务器端的 java 和客户端的纯 HTML/javascript 构建一个 Web 应用程序。
我的想法是使用 JSR 356 实现 websocket,并且需要在整个会话期间保持一些数据(用户登录详细信息)。
问题:有没有办法在整个会话期间保持数据持久性,这样我就不需要在每次调用时再次发送它(类似于 jsp/servlet EL)?
例如
谢谢
endpoint - 如何使用 java websockets (jsr 356) 将消息从一个端点重定向到另一个端点
我正在做一个个人项目来了解java websockets。基本上,我的 HTML 客户端通过JSR 356 websockets向我的服务器发送消息。端点@ServerEndpoint("/wsServer")
接收来自客户端的所有消息,我希望在另一个门户/端点@ServerEndpoint("/wsDashboard")
中实时查看这些消息作为仪表板。
我会很感激任何想法、文档或代码片段,因为我真的不知道,我见过像 apache kafka 这样的解决方案,但我不确定这是否是我需要的。
谢谢
json - 在 jsr 356 中将集合编码为 json 数组
我正在学习 websockets,我的 webapp 正在使用jsr 356 library。我按照教程进行操作,可以对 POJO 进行编码/解码,但是我找不到有关如何将数组或集合序列化为 JSON 的示例。
这就是我对数据进行编码的方法:
这就是我将数据发送到编码器的方式:
这是我得到的例外:
谁能给我一个关于如何做的提示?
谢谢
java - 如何声明我的 Java WebSocket 端点以使用和生成 JSON?
如何以声明性方式传达我需要支持 JSR 356 的 WebSocket 服务器端点来使用和生成 JSON 有效负载的信息?
如果不可能以声明方式实现,那么实现相同目标的编程方式是什么?
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
,相关部分粘贴在下面:
我在这里想念什么?任何指针?
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的类似错误报告。
java - 忽略证书验证 - Tomcat8 WebSocket (JSR-356)
上面的代码是为 Jetty WebSockets 实现的,告诉 java 客户端禁用证书验证。有什么方法可以在 Tomcat8 WebSockets (JSR-356) 的 Java API 中实现相同的功能吗?
PS:我试过这个方法。它不适用于 Tomcat WebSockets 的 Secure WebSocket 连接