Scala tomcat websocket:无法连接到tomcat服务器
我试图在tomcat 7.0.29上使用websocket来实现发布/订阅系统,但不知为什么,每次打开浏览器时,它总是发出“关闭”警报。。 env是tomcat-7.0.29,EclipseJuno,用scala编写。。 如果有人能帮忙,我将不胜感激 我的servlet如下所示: [PubServlet]:Scala tomcat websocket:无法连接到tomcat服务器,scala,tomcat,websocket,publish-subscribe,Scala,Tomcat,Websocket,Publish Subscribe,我试图在tomcat 7.0.29上使用websocket来实现发布/订阅系统,但不知为什么,每次打开浏览器时,它总是发出“关闭”警报。。 env是tomcat-7.0.29,EclipseJuno,用scala编写。。 如果有人能帮忙,我将不胜感激 我的servlet如下所示: [PubServlet]: class PubServlet extends WebSocketServlet { override def createWebSocketInbound (subProtocol
class PubServlet extends WebSocketServlet {
override def createWebSocketInbound (subProtocol: String, request: HttpServletRequest): StreamInbound = {
println("create#############################################")
new WebSocketHandler()
}
}
[初始化servlet]:
public class InitServlet extends HttpServlet {
private static final long serialVersionUID = -3163557381361759907L;
private static List<MessageInbound> socketList;
public void init(ServletConfig config) throws ServletException {
InitServlet.socketList = new ArrayList<MessageInbound>();
super.init(config);
System.out.println("Server start============");
}
public static synchronized List<MessageInbound> getSocketList() {
return InitServlet.socketList;
}
}
我的客户代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Index</title>
<script type="text/javascript">
var ws = null;
function startWebSocket() {
if ('WebSocket' in window){
ws = new WebSocket("ws://localhost:8080/PubSub_Web/index.do");
alert(ws);
}
else if ('MozWebSocket' in window)
ws = new MozWebSocket("ws://localhost:8080/PubSub_Web/index.do");
else
alert("not support");
ws.onmessage = function(evt) {
alert(evt.data);
};
ws.onclose = function(evt) {
alert("close");
};
ws.onopen = function(evt) {
alert("open");
};
}
function sendMsg() {
ws.send(document.getElementById('writeMsg').value);
}
</script>
</head>
<body onload="startWebSocket();">
<input type="text" id="writeMsg"></input>
<input type="button" value="send" onclick="sendMsg()"></input>
</body>
</html>
指数
var-ws=null;
函数startWebSocket(){
如果('WebSocket'在窗口中){
ws=newwebsocket(“ws://localhost:8080/PubSub_Web/index.do”);
警报(ws);
}
else if(窗口中的“MozWebSocket”)
ws=new-MozWebSocket(“ws://localhost:8080/PubSub_-Web/index.do”);
其他的
警惕(“不支持”);
ws.onmessage=函数(evt){
警报(evt.数据);
};
ws.onclose=函数(evt){
警报(“关闭”);
};
ws.onopen=函数(evt){
警报(“开放”);
};
}
函数sendMsg(){
send(document.getElementById('writeMsg').value);
}
请参阅。您最好使用标准的jaxax websocket api,该api在Tomcat 7.0.47中提供,请参见。您最好使用标准的jaxax websocket api,该api在Tomcat 7.0.47中提供,您需要覆盖getReadTimeout方法,该方法用于以毫秒为单位设置套接字超时。例如,如果要设置套接字超时2分钟(2*60*1000),则可以使用以下代码
@Override
public int getReadTimeout() {
return 2*60*1000;
}
注意:您可以通过返回-1来设置无限(始终打开)。您需要覆盖getReadTimeout方法,该方法用于以毫秒为单位设置套接字超时。例如,如果要设置套接字超时2分钟(2*60*1000),则可以使用以下代码
@Override
public int getReadTimeout() {
return 2*60*1000;
}
注意:您可以通过返回-1设置无限(始终打开)