Tag: websocket

Websocket:发送超过65535字节的消息失败

我从头开始在java中开发了一个websocket服务器。 javascript客户端在浏览器中运行: function connectToServer() { connection = new WebSocket(“ws://” + document.domain + “:8351”); connection.onopen = function () { }; connection.onmessage = function (e) { handleServerResponse(e.data); }; } 一切都很好,直到消息(json)达到65535字节。 然后套接字关闭(我还没弄明白,如果客户端或服务器关闭连接。 在浏览器控制台(尝试了几个浏览器)中,我看到:在加载页面时,与ws:// localhost:8351 /的连接被中断。 在服务器端,我看到:java.net.SocketException:java.net.SocketOutputStream.socketWrite的连接重置(SocketOutputStream.java:113) 所以,如果问题出在握手中,或者我在服务器中错误地构建了框架,并且客户端关闭了连接,或者我正在编写流不正确的字节,并且java io关闭套接字。 我的代码(服务器): 1)握手(服务器响应) String _01 = “HTTP/1.1 101 Switching Protocols\r\n”; String _02 = “Upgrade: websocket\r\n”; String _03 = “Connection: Upgrade\r\n”; String […]

气氛响应,广播不调用javascript onMessage处理程序

我正在努力尝试使用在我的eclipse环境中本地运行的大气2.0.3 tomcat 7.0.42来获得简单的基础实现(也可以从外部机器连接以查看与wireshark的流量)。 我遇到的问题是无论我使用什么传输,websocket,sse,轮询,长轮询,广播响应似乎永远不会到达客户端,并且永远不会调用response.OnMessage处理程序。 我在运行时没有收到exception,我尝试过使用firefox / chrome /和IE。 我也使用了wireshark,我看到一个包含我的消息响应的聊天消息后的数据包:“HTTP – 延续或非HTTP流量”,在数据包数据中,我可以看到发送给客户端的消息,所以它似乎服务器端正常工作。 建立与服务器的初始连接,并按预期调用js onOpen处理程序。 我正在做的工作主要基于大气样本聊天应用程序。 如果有人有任何建议,我将不胜感激。 可能还值得一提的是,我在大气样本中添加了实际的聊天处理程序,js和html页面,它也没有表现,并且onMessage js处理程序也没有被调用,所以我认为它是一个配置问题。 web.xml中 AtmosphereServlet AtmosphereServlet org.atmosphere.cpr.AtmosphereServlet oauseWebSocket true org.atmosphere.useNative true 0 true AtmosphereServlet /chat/* AtmosphereServlet /chatSample/* 的pom.xml javax.activation activation 1.1.1 org.atmosphere atmosphere-compat-tomcat 1.0.15 org.atmosphere atmosphere-compat-tomcat7 1.0.15 org.atmosphere atmosphere-runtime 2.0.3 org.codehaus.jackson jackson-core-asl 1.9.3 org.codehaus.jackson jackson-mapper-asl 1.9.3 javax.servlet servlet-api 2.5 服务器端代码: @AtmosphereHandlerService(path=”/chat”, […]

如何在Java Spring Tomcat中快速关闭无响应的websocket?

我有一个实时应用程序,客户端使用websockets连接Spring Framework服务器,该服务器运行Spring Boot Tomcat。 我希望服务器能够快速(在5秒内)检测到客户端由于网络断开或其他问题而停止响应并关闭websocket。 我努力了 将文档中描述的“配置WebSocket引擎”设置为最大会话空闲超时http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html @Bean public WebSocketHandler clientHandler() { return new PerConnectionWebSocketHandler(ClientHandler.class); } @Bean public ServletServerContainerFactoryBean createWebSocketContainer() { ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean(); container.setMaxSessionIdleTimeout(5000); container.setAsyncSendTimeout(5000); return container; } 我不确定这是否正确实现,因为我没有看到ServletServerContainerFactoryBean和我的一代ClientHandler之间的链接。 每2.5秒从服务器发送ping消息。 通过断开网络连接手动断开客户端后,服务器会愉快地发送ping 30秒以上,直到出现传输错误。 同时1和2 1和2,并在application.properties中设置server.session-timeout = 5 我测试它的方法是: 将websocket从笔记本电脑客户端连接到Tomcat服务器 使用物理交换机关闭笔记本电脑上的网络连接 等待Tomcat服务器事件 Spring FrameworkTomcat服务器如何快速检测到客户端已断开连接或未响应以关闭websocket?

使用身份validationcookie打开WebSocket连接

我有与Android中的Websockets和cookies相同的问题,我一直试图解决它,因为第一条评论建议, WebSocketClient(URI serverUri,Draft protocolDraft,Map httpHeaders,int connectTimeout) 使用Java-WebSocket ,以及查看许多其他API,如Jetty和AndroidAsync 。 但尽管如此,我无法打开websocket连接。 我有一个Apache http cookie ,需要这个以使用WebSocket向服务器validation自己。 将cookie转换为httpHeader的正确方法是什么,或者是否有任何简洁的方法可以在连接到websocket时简单地在身份validation中添加整个cookie? 也许我只是错过了明显的.. 对可能滥用条款的道歉,但我希望你能得到一般的想法。 非常感谢任何帮助,谢谢!

无法运行spring web socket演示

我正在尝试运行spring web socket的演示,但无法完全测试它。 我使用的是java 7和tomcat 7.0.50。 我在服务器启动时没有收到任何错误,但是当我用js打开网页连接到它时,我找不到404页面。 我不确定我是否缺少任何配置以使其运行,我怎么能从js端连接它。 我有以下xml文件: 我的控制器类是: @Controller public class SwsService { @MessageMapping(“/hello”) @SendTo(“/topic/greetings”) public Greeting greeting(HelloMessage message) throws Exception { return new Greeting(“Hello, ” + message.getName() + “!”); } public String getGreeting() { return “Hello, you are in!”; } } 我称之为的js是: var sock = new SockJS(“/hello”); sock.onopen = function () { […]

Websocket:如何将消息推送给目标用户

我正在尝试使用websocket并使用sock.js在spring中实现推送通知。 这些是代码片段: public class NotifyController { @MessageMapping(“/notifications”) @SendTo(“/get/notifications”) public Greeting greeting(HelloMessage message) throws Exception { new Greeting(“Hello, ” + message.getName() + “!”); } } public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { @Override public void configureMessageBroker(MessageBrokerRegistry config) { config.enableSimpleBroker(“/get/notifications”); config.setApplicationDestinationPrefixes(“/gssocket”); } @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint(“/notifications”).withSockJS(); } } 这是前面的代码.. function connect() { var notificationSocket = […]

Websocket示例不起作用

我尝试运行这个例子: import java.util.logging.Level; import java.util.logging.Logger; import javax.websocket.OnClose; import javax.websocket.OnError; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import javax.websocket.server.ServerEndpoint; @ServerEndpoint(value = “/chat”) public class ChatServer { private static final Logger LOGGER = Logger.getLogger(ChatServer.class.getName()); @OnOpen public void onOpen(Session session) { LOGGER.log(Level.INFO, “New connection with client: {0}”, session.getId()); } @OnMessage public String onMessage(String message, Session session) { LOGGER.log(Level.INFO, “New […]

Spring 4 WebSocket应用程序

我试图从spring网站运行这个例子: 教程除了Spring Boot部分。 在web.xml Archetype Created Web Application sample org.springframework.web.servlet.DispatcherServlet contextClass org.springframework.web.context.support.AnnotationConfigWebApplicationContext contextConfigLocation com.evgeni.websock.WebSocketConfig sample / Java配置: @Configuration @ComponentScan(basePackages = {“com.evgeni.controller”}) @EnableWebSocketMessageBroker @EnableWebMvc public class WebSocketConfig extends WebMvcConfigurerAdapter implements WebSocketMessageBrokerConfigurer { public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint(“/hello”).withSockJS(); } public void configureClientInboundChannel(ChannelRegistration registration) { // TODO Auto-generated method stub } public void configureClientOutboundChannel(ChannelRegistration registration) { // […]

需要Java websocket客户端

我找不到任何websocket客户端,实现了用Java编写的协议的最新版本。 我在Java socket.io客户端找到了答案,但是 http://code.google.com/p/weberknecht/支持协议hybi-00,最后一次构建是5个月前 https://github.com/TooTallNate/Java-WebSocket根本不支持wss 你能推荐什么吗? 谢谢

Spring 4 WebSocket远程代理配置

我设法用Spring 4和Stomp创建简单的Websocket应用程序。 在这里查看我的上一个问题然后我尝试使用远程消息代理(ActiveMQ)。 我刚开始经纪人并改变了 registry.enableSimpleBroker(“/topic”); 至 registry.enableStompBrokerRelay(“/topic”); 它工作。 问题是如何配置代理? 据我所知,在这种情况下,应用程序自动发现localhost上的代理:defaultport,如果我需要将应用程序指向其他机器上的其他代理,该怎么办?