java服务端
@ServerEndpoint(value = "/WebSocket/{路径参数1}/{路径参数2}")
public class HdActWebSocket {
/**
*
* 方法说明 websocket连接建立成功调用的方法
*
* @param 路径参数1
*
* @param 路径参数2
*
* @param session
* 连接会话实例
*
*/
@OnOpen
public void onOpen(@PathParam(value = "路径参数1") String 路径参数1, @PathParam(value = "路径参数2") String 路径参数2, Session session) {
System.out.println("来自" + source + "的用户:" + openId + "建立连接!会话Id为:" + session.getId());
//保存参数到会话
session.getUserProperties().put("路径参数1", 路径参数1);
session.getUserProperties().put("路径参数2", 路径参数2);
}
/**
*
* 方法说明 websocket连接关闭调用的方法
*
* @param session
* 连接会话实例
*
*/
@OnClose
public void onClose(Session session) {
}
/**
*
* 方法说明 websocket连接收到消息调用的方法
*
* @param message
* 消息
* @param session
* 会话实例
*
*/
@OnMessage
public void onMessage(String message, Session session) {
System.out.println("收到消息:" + message);
}
/**
*
* 方法说明 websocket连接发生错误调用的方法
*
* @param session
* @param error
*/
@OnError
public void onError(Session session, Throwable error) {
System.out.println(session.getId() + "客户端发生错误");
error.printStackTrace();
}
/**
*
* 方法说明 服务器间消息转发服务
*
* @param message
* @throws IOException
* @throws DeploymentException
*/
public void serverForward(String message) throws IOException, DeploymentException{
String url = "ws://" + 地址 ;
Session clientSession = null;
// 1.通过java客户端建立与服务器间socket连接
clientSession = ContainerProvider.getWebSocketContainer().connectToServer(WebSocketClient.class, URI.create(url));
// 2.发送消息
clientSession.getBasicRemote().sendText(message);
// 2.关闭socket连接
clientSession.close();
}
}
html5客户端
进行浏览器与服务器间websocket会话
function websocketConnect(){
//判断当前浏览器是否支持WebSocket
if('WebSocket' in window){
WebSocket = new WebSocket("ws://"+domainName+"/WebSocket/路径参数1/路径参数2");
}
else{
alert('Not support websocket')
}
//连接发生错误的回调方法
WebSocket.onerror = function(){
console.log('error');
};
//连接成功建立的回调方法
WebSocket.onopen = function(event){
console.log('链接上');
WebSocket.send('hello');
}
//接收到消息的回调方法
WebSocket.onmessage = function(event){
var data = event.data;
console.log(data);
}
//连接关闭的回调方法
WebSocket.onclose = function(){
console.log('关闭了');
}
}
java客户端
进行java客户端(也可看作服务器)与服务器间websocket会话
@ClientEndpoint
public class WebSocketClient {
public WebSocketClient() {
super();
}
@OnOpen
public void onOpen(Session session) {
System.out.println("建立服务器间websocket连接:" + session.getId());
}
@OnMessage
public void onMessage(String message, Session session) {
System.out.println("服务器间websocket连接:" + session.getId() + "收到消息:" + message);
}
@OnError
public void onError(Throwable t, Session session) {
System.out.println("服务器间websocket连接:" + session.getId() + "出错");
t.printStackTrace();
}
@OnClose
public void onClose( Session session) {
System.out.println("服务器间websocket连接:" + session.getId() + "关闭了");
}
}