200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > websocket——Firefox 无法建立到 ws://... 服务器的连接

websocket——Firefox 无法建立到 ws://... 服务器的连接

时间:2019-04-17 20:56:21

相关推荐

websocket——Firefox 无法建立到 ws://... 服务器的连接

页面访问java websocket服务时,出现异常,Firefox下的异常是:Firefox 无法建立到 ws://... 服务器的连接;

IE下的异常是:WebSocket Error: Incorrect HTTP response. Status code 404, Not Found

环境是:apache-tomcat-7.0.62、jdk1.7.0_67、@ServerEndpoint("/websocket")这种声明式写法

我的排查步骤:

1、tomcat的JAVA_HOME指向jdk7

2、Firefox参数调整,据说默认是关闭websocket的,但是我的版本是38.0.6,没有关闭

3、web.xml头部改为<web-app xmlns="/xml/ns/javaee" xmlns:xsi="/2001/XMLSchema-instance"

xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_0.xsd" version="3.0">

4、最后发现,是由于我引入了一个javax.websocket-api.jar放到了WEB-INF/lib/下面,可能跟tomcat7的websocket-api.jar有冲突。

去掉javax.websocket-api.jar后异常消失

<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Testing websocket</title></head><body><div><input type="submit" value="Start" οnclick="start()" /><input type="button" value="Stop" οnclick="stop()" /></div><div id="messages"></div><script type="text/javascript">console.log(window.WebSocket);var webSocket = new WebSocket('ws://127.0.0.1:8088/WebModule/websocket');webSocket.onerror = function(event) {onError(event)};webSocket.onopen = function(event) {onOpen(event)};/* webSocket.onclose = function(event){alert("要离开了?");}; */webSocket.onmessage = function(event) {onMessage(event)};function onMessage(event) {document.getElementById('messages').innerHTML += '<br />'+ event.data;}function onOpen(event) {document.getElementById('messages').innerHTML = 'Connection established';}function onError(event) {alert(event.data);}function start() {webSocket.send('hello');return false;}function stop() {webSocket.send('bye bye!');webSocket.close();}</script></body></html>

import java.io.IOException;import javax.websocket.OnClose;import javax.websocket.OnMessage;import javax.websocket.OnOpen;import javax.websocket.Session;import javax.websocket.server.ServerEndpoint;@ServerEndpoint("/websocket")public class WebSocketTest {@OnMessagepublic void onMessage(String message, Session session) throws IOException, InterruptedException{// Print the client message for testing purposesSystem.out.println("Received: " + message);// Send the first message to the clientsession.getBasicRemote().sendText("This is the first server message");// Send 3 messages to the client every 5 secondsint sentMessages = 0;while(sentMessages < 3){Thread.sleep(5000);session.getBasicRemote().sendText("This is an intermediate server message. Count: " + sentMessages);sentMessages++;}// Send a final message to the clientsession.getBasicRemote().sendText("This is the last server message");}@OnOpen public void onOpen(){System.out.println("Client connected");}@OnClosepublic void onClose(){System.out.println("Connection closed");}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。