Java 通过tomcat中的Servlet实现Websocket
我试图通过servlet实现一个web套接字。我的应用服务器是Tomcat7 我可以找到使用Java 通过tomcat中的Servlet实现Websocket,java,tomcat,servlets,websocket,Java,Tomcat,Servlets,Websocket,我试图通过servlet实现一个web套接字。我的应用服务器是Tomcat7 我可以找到使用WebSocketServlet类的示例。但是这个类在Tomcat8中被弃用并删除了 我看到了另一种选择,即用以下内容注释类 @ServerEndpoint(value = "/websocket/test") 我需要帮助来理解 我将如何在servlet中使用此注释?对于web套接字,servlet是否无关 如果我用上面的注释和其他注释(如onOpen、onClose等)创建一个普通类,我是否需要为 w
WebSocketServlet
类的示例。但是这个类在Tomcat8中被弃用并删除了
我看到了另一种选择,即用以下内容注释类
@ServerEndpoint(value = "/websocket/test")
我需要帮助来理解
$(document).ready(function(){
var TS = {};
TS.socket = null;
TS.connect = (function(host) {
if ('WebSocket' in window) {
TS.socket = new WebSocket(host);
} else if ('MozWebSocket' in window) {
TS.socket = new MozWebSocket(host);
} else {
alert('Error: WebSocket is not supported by this browser.');
return;
}
TS.socket.onmessage = function (message) {
//Console.log(message.data);
$("#myd").text (message.data);
};
});
TS.initialize = function() {
if (window.location.protocol == 'http:') {
TS.connect('ws://' + window.location.host + '/gwebsocket/gwebsocket/servertime');
} else {
TS.connect('wss://' + window.location.host + '/gwebsocket/gwebsocket/servertime');
}
};
TS.initialize();
});
及
看看
它使用WebSocket进行主传输,使用长轮询进行回退传输
客户端使用atmosphere.js jQuery插件实现
使用HTML5浏览器,我也取得了一些成功
$(document).ready(function(){
var TS = {};
TS.socket = null;
TS.connect = (function(host) {
if ('WebSocket' in window) {
TS.socket = new WebSocket(host);
} else if ('MozWebSocket' in window) {
TS.socket = new MozWebSocket(host);
} else {
alert('Error: WebSocket is not supported by this browser.');
return;
}
TS.socket.onmessage = function (message) {
//Console.log(message.data);
$("#myd").text (message.data);
};
});
TS.initialize = function() {
if (window.location.protocol == 'http:') {
TS.connect('ws://' + window.location.host + '/gwebsocket/gwebsocket/servertime');
} else {
TS.connect('wss://' + window.location.host + '/gwebsocket/gwebsocket/servertime');
}
};
TS.initialize();
});
及
我终于明白了。因此,我在这里回答,供其他人参考 1) 我将如何在servlet中使用此注释?对于web套接字,servlet是否无关 显然是的,web套接字不需要servlet 2) 如果我用上面的注释和其他注释(如onOpen、onClose等)创建一个普通类,我是否需要将该类的条目放在web.xml中?还是web.xml也不相关 web.xml中也不需要任何条目 下面是一个示例服务器端代码
@ServerEndpoint(value = "/echo")
public class Echo {
@OnOpen
public void start(Session session) {
//TODO
}
@OnClose
public void end() {
//TODO
}
@OnMessage
public void incoming(String message) {
//TODO
}
@OnError
public void onError(Throwable t) throws Throwable {
//TODO
}
}
对于客户端,如果您有兼容HTML5的浏览器,则可以使用Javascript。
否则,您将使用tyrus库编写java客户机。参考我终于明白了这一点。因此,我在这里回答,供其他人参考 1) 我将如何在servlet中使用此注释?对于web套接字,servlet是否无关 显然是的,web套接字不需要servlet 2) 如果我用上面的注释和其他注释(如onOpen、onClose等)创建一个普通类,我是否需要将该类的条目放在web.xml中?还是web.xml也不相关 web.xml中也不需要任何条目 下面是一个示例服务器端代码
@ServerEndpoint(value = "/echo")
public class Echo {
@OnOpen
public void start(Session session) {
//TODO
}
@OnClose
public void end() {
//TODO
}
@OnMessage
public void incoming(String message) {
//TODO
}
@OnError
public void onError(Throwable t) throws Throwable {
//TODO
}
}
对于客户端,如果您有兼容HTML5的浏览器,则可以使用Javascript。
否则,您将使用tyrus库编写java客户机。请参阅谢谢您的回答。是的,气氛是一个流行的选择,我已经做了一个Hello World。我还用Tyrus罐子做了一个hello world。但我想尝试使用Java和tomcat实现一个普通的实现。请更新我的答案,了解我发现用于HTML5浏览器的一些代码-不知道我从哪里偷来的。谢谢你的回答。是的,气氛是一个流行的选择,我已经做了一个Hello World。我还用Tyrus罐子做了一个hello world。但我想尝试使用Java和tomcat实现一个普通的实现。更新我的答案,获取一些我发现用于HTML5浏览器的代码——不知道从哪里偷来的。