1、引入 tyrus-standalone-client-1.13.1.jar 包
2、
import java.io.IOException;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
//value为请求的url
@ServerEndpoint(value="/TestWebsocketServer/{sid}/{name}")
public class TestWebsocketServer {
/**
* 建立连接时触发该方法
* @param sid
* @param name
* @param session
*/
@OnOpen
public void onOpen(@PathParam("sid") String sid, @PathParam("name") String name, Session session){
System.out.println("建立websocket连接,客户端id为" + sid + ",名称为 " + name);
//给客户端发送信息
try {
session.getBasicRemote().sendText("已建立websocket连接");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 接收到客户端的信息时触发
* @param message
* @return
*/
@OnMessage
public void onMessage(String message) {
System.out.println("接收到客户端信息为 " + message);
}
/**
* 发生异常时触发该方法
* @param throwable
*/
@OnError
public void onError(Throwable throwable) {
System.out.println("连接发生异常 " + throwable.getMessage());
}
/**
* 关闭连接时触发
* @param sid
* @param name
*/
@OnClose
public void onClose(@PathParam("sid") String sid, @PathParam("name") String name) {
System.out.println("关闭websocket连接,客户端id为" + sid + ",名称为 " + name);
}
}
3、另外我们可以创建一个公共的map集合,将所有建立的websocket的session保存到该集合,方便服务端统一发送数据给所有客户端。在onOpen的时候将session保存到该集合,在
onError和onClose方法触发的时候将对应的session从map集合中remove(在每个方法中都可以根据需要传入对应的参数)。