WebSocket 的使用,和客户端断电,服务器检测断开连接
2017-04-17 11:17
471 查看
WebSocket 的使用,和客户端断电,服务器检测断开连接
服务器用WebSocketServlet,实例化自定义的MessageInbound 。
web.xml中配置socket
<servlet> <servlet-name>WebSocket</servlet-name> <servlet-class>com.shadow.smmp.control.WebSocket </servlet-class> </servlet> <servlet-mapping> <servlet-name>WebSocket</servlet-name> <url-pattern>/websocket/websocket</url-pattern> </servlet-mapping>
Websocket实现
public class WebSocket extends WebSocketServlet { @Override protected StreamInbound createWebSocketInbound(String subProtocol, HttpServletRequest request) { return new UserMessageInbound (); } }
重写 MessageInbound ,接收客户端传来的信息
public class UserMessageInbound extends MessageInbound { /** * 建立连接的触发的事件 */ @Override protected void onOpen(WsOutbound outbound) { } @Override protected void onClose(int status) { System.out.println("收到设备断开连接码"+status); } @Override protected void onBinaryMessage(ByteBuffer message) throws IOException { throw new UnsupportedOperationException("Binary message not supported."); } /** * 客户端发送消息到服务器时触发事件 */ @Override protected void onTextMessage(CharBuffer message) throws IOException { } }
客户端就不写了,主要是js,也可以是Android端的
如果客户端异常断电,导致连接一直在怎么办,就需要服务器检测客户端是否还在,然后断开连接,其实很简单,服务器写个心跳检测,然后调用
ByteBuffer b = ByteBuffer.wrap("close".getBytes()); System.out.println("服务器发送离线命令给" + this.user); wsOutbound.close(1, b);
wsOutbound.close(1, b);这个方法判断如果客户端不在线,检测到客户端不在就会主动释放连接
其实WebSocketServlet用的是Tomcat的Websocket,有点过时了,Spring有它自己的Websocket,可以网上查一下
相关文章推荐
- 使用完成端口的单台服务器最多可连接2500个客户端
- 连接远程oracle和SVN服务器客户端的使用
- 服务器中判断客户端socket断开连接的方法
- Windows下使用MySQL客户端连接MySQL服务器的操作
- JAVA Socket服务器 判断客户端连接断开
- 使用同一账号在多个xmpp客户端连接openfire服务器的解决方案
- C# 客户端判断服务器连接已断开
- shd_config ssh设置(解决ssh客户端连接服务器断开)
- Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端
- shd_config ssh设置(ssh客户端连接服务器断开)
- 终端服务器安全层在协议流中检测到错误,并已取消客户端连接。 客户端 ip:x.x.x.x
- 检测TCP非正常断开连接 SO_KEEPALIVE 使用缺陷分析
- Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端
- 如何使用MSTSC命令远程连接服务器或客户端
- 关于socket编程中服务器端如何检测客户端连接断开的问题
- Oracle 不安装Oracle客户端,使用PLSQL连接Oracle服务器
- C#编写socket客户端,服务器断开连接时客户端报异常
- socket中使用心跳来检测连接是否断开
- 使用完成端口的单台服务器最多可连接2500个客户端
- Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端