Java WebSocket服务端实现
来源:互联网 发布:jquery 1.12.4.js下载 编辑:程序博客网 时间:2024/06/06 09:31
在线调试工具
http://www.blue-zero.com/websocket/
添加JAR文件
java-websocket-1.3.0.jar
编写ServerSocket.java
package com.wei.socket;import java.net.InetSocketAddress;import java.net.UnknownHostException;import org.java_websocket.WebSocket;import org.java_websocket.handshake.ClientHandshake;import org.java_websocket.server.WebSocketServer;public class ServerSocket extends WebSocketServer { private ServerManager _serverManager; public ServerSocket(ServerManager serverManager,int port) throws UnknownHostException{ super(new InetSocketAddress(port)); _serverManager=serverManager; } @Override public void onClose(WebSocket socket, int message, String reason, boolean remote) { _serverManager.UserLeave(socket); } @Override public void onError(WebSocket socket, Exception message) { System.out.println("Socket Exception:"+message.toString()); } @Override public void onMessage(WebSocket socket, String message) { System.out.println("OnMessage:"+message.toString()); if (message.equals("1")) { _serverManager.SendMessageToUser(socket, "What?"); } String[] result=message.split(":"); if (result.length==2) { if (result[0].equals("user")) { _serverManager.UserLogin(result[1], socket); } } } @Override public void onOpen(WebSocket socket, ClientHandshake handshake) { System.out.println("Some one Connected..."); }}
编写ServerManager.java
package com.wei.socket;import java.util.HashMap;import java.util.Map;import java.util.Set;import org.java_websocket.WebSocket;import org.java_websocket.WebSocketImpl;public class ServerManager { private ServerSocket serverSocket=null; private Map<WebSocket, String> userMap=new HashMap<WebSocket, String>(); public ServerManager(){ } public void UserLogin(String userName,WebSocket socket){ if (userName!=null||socket!=null) { userMap.put(socket, userName); System.out.println("LOGIN:"+userName); SendMessageToAll(userName+"...Login..."); } } public void UserLeave(WebSocket socket){ if (userMap.containsKey(socket)) { String userName=userMap.get(socket); System.out.println("Leave:"+userName); userMap.remove(socket); SendMessageToAll(userName+"...Leave..."); } } public void SendMessageToUser(WebSocket socket,String message){ if (socket!=null) { socket.send(message); } } public void SendMessageToUser(String userName,String message){ Set<WebSocket> ketSet=userMap.keySet(); for(WebSocket socket : ketSet){ String name=userMap.get(socket); if (name!=null) { if (name.equals(userName)) { socket.send(message); break; } } } } public void SendMessageToAll(String message){ Set<WebSocket> ketSet=userMap.keySet(); for(WebSocket socket : ketSet){ String name=userMap.get(socket); if (name!=null) { socket.send(message); } } } public boolean Start(int port){ if (port<0) { System.out.println("Port error..."); return false; } System.out.println("Start ServerSocket..."); WebSocketImpl.DEBUG=false; try { serverSocket=new ServerSocket(this,port); serverSocket.start(); System.out.println("Start ServerSocket Success..."); return true; } catch (Exception e) { System.out.println("Start Failed..."); e.printStackTrace(); return false; } } public boolean Stop(){ try { serverSocket.stop(); System.out.println("Stop ServerSocket Success..."); return true; } catch (Exception e) { System.out.println("Stop ServerSocket Failed..."); e.printStackTrace(); return false; } }}
编写主函数
import java.util.Scanner;import com.wei.socket.ServerManager;public class Test { public static void main(String[] args) { ServerManager serverManager=new ServerManager(); boolean isRun=true; Scanner scanner=new Scanner(System.in); System.out.println("Input your choice:"); while(isRun){ int input=scanner.nextInt(); switch (input) { case 1: serverManager.Start(8888); break; case 2: serverManager.Stop(); isRun=false; break; default: break; } } }}
阅读全文
0 0
- Java WebSocket服务端实现
- WebSocket 服务端实现
- C# 实现WebSocket服务端
- java编写WebSocket服务端
- 2、Java WebSocket实现服务端主动发消息给客户端
- Java Websocket实例【服务端与客户端实现全双工通讯】
- java实现websocket服务端endPoint无法注入Service问题
- Websocket服务端实现的方法
- WebSocket 协议及服务端实现
- C# 实现WebSocket服务端实例
- java编写的Websocket服务端
- c++实现websocket服务端与JavaScript通讯
- [C#] WebSocket 客户端+服务端 轻松实现
- Netty websocket 实现服务端推送消息
- as3 Air ServerSocket支持websocket,实现服务端websocket
- JAVA Sokcet(服务端)连接WebSocket个人总结
- Java实现WebSocket聊天
- Java实现WebSocket
- ubuntu安装USB转串口驱动(PL2303)
- C++动态内存管理
- VR World NYC正式开幕,带你玩转所有VR内容
- spring、IoC控制反转和DI依赖注入入门、基于XML的Bean装配、基于注解的Bean装配
- golang mongodb Aggregate
- Java WebSocket服务端实现
- 机器学习笔记之决策边界
- mysql主键和外键
- c++迭代器
- react native 运行Android Error watching file for changes: EMFILE问题解决( Mac os)
- 找不到xxx.so.x错误的解决方法
- ajax----------5、注册时提示用户名已被注册
- Hadoop Yarn 框架原理及运作机制
- 事件分发二