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

java - Java WebSocket API:将服务限制在某些域

HTML5Rocks WebSockets 教程中提到的,

服务器决定是否将其服务提供给所有客户端或仅位于一组定义良好的域上的客户端可用。

好的,如何使用Java API for WebSocket 1.0 (JSR 356)(在Tomcat上运行)来做到这一点?

0 投票
0 回答
714 浏览

java - Websocket 连接显示关闭消息

我有一个简单的 websocket 应用程序,已部署在 tomcat 7.0.52 上。我正在使用 JSR 356 API javax.websocket-api-1.0-b08.jar

我的 Java 服务器端代码是

每当我尝试连接到 websocket 时,它都会向我抛出它关闭的错误。

在客户端(javascript):代码如下

我无法理解为什么它显示连接已关闭消息。

0 投票
3 回答
22948 浏览

java - Java WebSockets:远程端点处于状态 [TEXT_FULL_WRITING]

我正在尝试实现一些基于 websockets 的应用程序,它将与 JS 客户端进行非常密集的通信。

发送消息的代码非常原始:

对于罕见的发送,它工作得很好,但是当少数线程试图通过同一个会话(套接字)发送一些消息时,会引发下一个异常(请注意,这不是多线程问题,因为代码块是由会话同步的):

谷歌目前并没有丰富的此类异常,在这个问题上打了几个小时后,仍然没有解决方案。

Java 7.0.21,在 Tomcat 7.0.52 和 Tomcat 8.0.3 上测试。

任何答案都非常感谢!提前致谢。

2014 年 3 月 11 日更新:我使用 Jetty 9.1 测试了我的应用程序,但没有发生此异常。我假设这是 Tomcat 实现错误。

0 投票
5 回答
7588 浏览

java - 将 JSR-356 WebSocket @ServerEndpoint 与 Spring 3 bean 集成

我正在使用没有全新 JSR-356 WebSockets 支持的 Spring 3.2.5。

我想在我的@ServerEndpointWebSocket 服务器中有单例 bean 引用,它由 servlet 容器本身实例化,而不是在 Spring 上下文中。

什么是干净的方法?

我当前的解决方案:我@Service在静态字段中使用实例制作了单例 bean:

并且只是@ServerEndpoint通过静态方法获取它,如果返回 null 则断开用户连接(如果在服务器启动期间未创建 bean 但用户连接):

0 投票
1 回答
2448 浏览

java - 如何将参数/属性传递给 JSR-356 WebSocket 客户端(@ClientEndpoint)?

我想为容器实例化的 WebSocket 客户端端点添加一些额外的属性以进行分组/统计。我使用 JSR-356 创建了一个客户端 WebSocket 端点:

Session session = container.connectToServer( MyClientEndpoint.class , uri );

我想将一些对象传递给SessionMyClientEndpoint实例:

因为MyClientEndpoint实例是由容器实例化的(在我的示例中 - Jetty),所以我不能只在构造函数中传递参数。我也不能在Session用户属性中设置我的参数:

Session session = container.connectToServer( ClientSocket.class , uri ); session.getUserProperties().put( "group", this);

因为我在@OnOpen处理程序中没有我的属性,而且我不能保证我的"group"属性会在任何@OnMessagecall之前设置。

如何以允许我在由容器实例化的@ClientEndpoint 对象中使用其他对象的方式连接到 JSR-356 WebSocket?

0 投票
4 回答
12009 浏览

java - JSR-356 WebSockets with Tomcat - 如何限制单个 IP 地址内的连接?

我制作了一个 JSR-356 @ServerEndpoint,我想在其中限制来自单个 IP 地址的活动连接,以防止简单的 DDOS 攻击。

请注意,我正在搜索 Java 解决方案(JSR-356、Tomcat 或 Servlet 3.0 规范)。

HandshakeRequest我已经尝试过自定义端点配置器,但即使在对象中我也无法访问 IP 地址。

如何在没有外部软件(如 iptables)的情况下限制来自单个 IP 地址的 JSR-356 连接数?

0 投票
1 回答
5120 浏览

java - 使用 modifyHandshake 在 WebSocket 握手上添加标头

我正在尝试在握手期间发送自定义标头。我可以使用 ServerEndpointConfig.Configurator 拦截握手并覆盖 modifyHandshake。

该方法被调用并且 id 被添加到响应头中,尽管它不发送额外的头。

我用wireshark嗅了嗅它,以确保它不是客户端框架:

我想将生成的 id 发送给客户端,并且不想在额外的调用中执行此操作。是否有没有发送它的原因或有不同的方法?

我在开发博客上找到了一个示例,它还添加了一个标题,modifyHandshake所以我想理论上应该是可能的。

0 投票
1 回答
447 浏览

java - 在 Tomcat JSR 356 websocket 中刷新页面时发生异常

我有 ServerEndpoint 类:

当我刷新页面时,调用了 onError 并且异常 t 包含下一个描述: java.util.concurrent.ExecutionException: java.net.SocketException: Broken pipe

可能是什么原因?

0 投票
1 回答
2614 浏览

java - Websocket - ServerEndpoint 和 ClientEndpoint 不交换消息

我目前正在使用 Glassfish 4 和“板载”实现测试 Websockets,但无法发送或接收任何消息,尽管遵循Java EE 7 教程 - 发送和接收消息如何使用 JSR 356 API 构建 Java WebSocket 应用程序等教程。我想实现一个简单的客户端服务器通信,所以我只有一个

服务器:

和一个客户:

Websocket 可用,我可以连接到服务器(更改 URI 会导致 404 握手错误),但不会调用任何(服务器端)方法,我得到的唯一日志消息是:

在客户端。我希望服务器至少记录 onOpen 调用。使用带有 Netbeans 8 的(未改动的)Glassfish 4 进行此测试。

有什么建议为什么没有交换消息?

0 投票
1 回答
2690 浏览

java - Java/Tomcat:如何处理 WebSocket 设置完成

我有以下场景:具有相同应用程序的几个 Tomcat 实例需要在启动时相互连接。对于服务器之间的连接,使用 WebSockets (JSR-356)。Tomcat 启动后,我需要启动与另一台服务器的建立。

我怎样才能最正确地处理,内部 WebSockets 机制已经启动并且我可以开始使用 WebSockets?

应用程序基于 Spring 4。

我在 spring 启动时尝试了这个Execute 方法,这个How to add a hook to the application context 初始化事件?和spring 启动事件之后的这个Tomcat 。

所有这些方法都很酷,但似乎在那一刻 WebSockets 还没有准备好使用。抛出下一个异常:

现在,作为一种解决方法,我在建立连接之前在 WebServlet 的 init() 方法中使用了 3 秒的延迟,但我想避免这种黑客行为。

有任何想法吗?谢谢!