问题标签 [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.
junit - 在嵌入式 Jetty 上使用 javax.websocket 进行 JUnit 测试抛出 RejectedExecutionException: NonBlockingThread
我正在尝试编写一个创建套接字并连接到嵌入式码头实例的测试用例。我在用着
- 码头:9.2.0.RC0
- javax.websocket-api & javax.websocket-client-api: 1.0
- javax.websocket 服务器和客户端实现:9.1.5.v20140505
使用 websocket servlet 启动嵌入式码头服务器似乎工作正常。我从这个例子中获取了一些代码。然而这条线
抛出此异常
这是我说明嵌入式码头服务器的包装。
客户端端点
和测试
amazon-web-services - 为什么 websocket 不能在云上运行?
我在 Wildfly 上开发了我们的 websocket 项目。当我们在 localhost 或本地网络中对其进行测试时,一切正常。但是当我在 AWS 上部署它时,websocket 不再工作了。我们可以访问其他html页面。但是当我们连接到“ws://ip/project location”时,chrome只会说握手错误。我在jelastic托管上也遇到过同样的网络套接字问题。我的问题是
- 为什么会这样?
- websocket协议不够稳定?
- java中有没有合适的websocket项目托管?
java - JSR-356 中服务器发起的 WebSocket 广播
在 JSR-356 中广播服务器发起的 WebSocket 消息的最佳实践是什么?
澄清一下,我知道使用注释时回复甚至广播是如何工作的@OnMessage
,但我想从服务器发送一个事件,而不先从客户端接收消息。换句话说,我想我需要在MessageServerEndpoint
下面的代码中引用实例。
我见过以下解决方案,但它使用静态方法并且不是很优雅。
java - 在 Spring Boot 中使用 Java API for WebSocket (JSR-356)
我是 Spring 新手(并且在 stackoverflow 上提问)。
我想通过 Spring Boot 启动嵌入式(Tomcat)服务器并向其注册 JSR-356 WebSocket 端点。
这是主要方法:
这是配置的外观:
EchoEndpoint
实现很简单:
对于第二部分,我关注了这篇博文:https ://spring.io/blog/2013/05/23/spring-framework-4-0-m1-websocket-support 。
但是,当我运行应用程序时,我得到:
该异常进一步是由NullPointerException
in引起的ServerEndpointExporter
,因为此时返回的getServletContext
方法applicationContext
仍然存在null
。
对Spring有更好理解的人可以帮助我吗?谢谢!
java - 尝试使用 jsr 356 时出现 java.lang.linkage 错误
我正在尝试从部署在码头的战争中实现 jsr 356 websocket 连接。
我以此为指导:http ://aredko.blogspot.com/2013/11/java-websockets-jsr-356-on-jetty-91.html
(我可以找到很多关于基本上使用带有嵌入式码头服务器的 jsr 356 的教程,但没有关于在现有服务器中构建 websocket 连接的教程——那里有什么好的吗?)
每当我运行上面列出的代码时,我都会收到以下错误:
这是指代码
我不知所措。我正在使用 gradle 中的以下行来引入 websocket 内容:
我看到 javax-websocket-server-impl jar 和 javax.websocket-api jar 都包含 ServerContainer 类......但我只在我的 war 文件中包含其中一个。码头是从自己内部的旧版本中提取的吗?还是我完全误读了问题的根源?
我拥有的码头版本是:jetty-9.2.1.v20140609
java - 如何在码头容器中设置 JSR356 websockets
我看到很多关于如何使用某种嵌入式 Web 服务器设置 JSR356 websockets 的教程。
但是我想将一些 websocket 添加到部署到独立码头安装的现有 WAR 中,jetty jetty-9.2.3.v20140905,我可以找到很少的信息。我无法弄清楚是什么阻止它工作。据我了解,带注释的服务器端点应该由码头自动处理。
服务器端点:
客户端端点:
这是将客户端连接到服务器的代码(在一些现有方法中运行)
然而,旋转码头会在 connectToServer 线上出现错误
我能想到的只是 URI 不正确。如果码头在 8080 上运行并且我的 .war 被命名为 myWar,而我的终点被命名为 myendpoint...这不是正确的 URI 吗?
是否必须执行一些额外的步骤来“激活”服务器端点以侦听连接?我一定遗漏了一些明显的东西。
java - 如何将请求标头添加到基于 Tyrus 注释的客户端
我正在尝试使用带有基于注释的客户端端点的 tyrus 独立客户端(tyrus-standalone-client-1.9)访问 websocket 服务器端点。我主要是按照这个例子。
也就是说,我的客户端端点当前看起来像
但是,我需要将一些会话 ID 与请求一起传递,并且我需要修改请求的原始标头以使服务器端点接受我的连接。
在程序化客户端端点中,我可以做类似的事情
但是似乎没有任何选项可以将配置传递给基于注释的客户端。
是否有其他方法可以添加/修改我目前缺少的请求标头?我真的很想继续使用基于注释的方法,因为它对我来说似乎更干净......
java - 带有 Guice 3.0 的 Tomcat8 WebSockets (JSR-356)
我正在尝试将 Guice 服务 @Inject 到 @ServerEndpoint 中。我使用 Tomcat 8.0.15 作为 JSR-356 实现。但是,依赖注入不起作用。为了启用 Guice 注入,是否需要进行任何其他配置?请注意,我只使用所有标准 javax 注释。
java - 如何测试ServerEndPoint、ClientEndPoint?
我已经实现了ServerEndPoint
,ClientEndPoint
我该如何测试它?例如,我在 Session 上有连接包装器,我想测试它取决于会话数据的行为,我还想测试客户端和服务器之间的消息传递。请注意,我没有任何战争或任何应用程序配置,例如 web.xml、将在另一个地方使用的 web-sockets 基础设施,我所拥有的只是映射的 ServerEndPoint 和 ClientEndPoint 实现。
java - 在 Websocket 会话中访问 UserAgent?
使用 Java 的“JSR 356 - Java API for WebSocket”的 Tyrus 参考实现,我找不到访问用于 Websocket 升级的 HTTP 连接的方法。因此,我无法访问浏览器发送的 HTTP 标头。
有没有办法读取 HTTP UserAgent 标头?
将“会话”对象转换为“TyrusSession”或类似对象是可以接受的,无论如何我都必须这样做才能获得远程地址。在 Websocket 连接中再次发送 UserAgent 作为消息将是我的后备解决方案。