WebSocet设置单发和群发

WebSocet设置单发和群发

群发:

package web.servlet;import web.Bean.GetHttpSessionConfigurator;
import web.Thread.InterfaceDataListWebSocketThread;
import web.mapping.user;import javax.servlet.http.HttpSession;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.Optional;
import java.util.concurrent.CopyOnWriteArraySet;/*** 实时数据websocket** @ceeate 2019/5/22**/
@ServerEndpoint(value = "/interfaceDataListWebSocket",configurator= GetHttpSessionConfigurator.class)
public class InterfaceDataListWebSocket {InterfaceDataListWebSocketThread thread = new InterfaceDataListWebSocketThread();Thread thread1 =new Thread(thread);//用来存放每个客户端对应的MyWebSocket对象。private static CopyOnWriteArraySet webSocketSet = new CopyOnWriteArraySet();private Session session=null;/*** @ClassName: onOpen* @Description: 开启连接的操作*/@OnOpenpublic void onOpen(Session session, EndpointConfig config) throws IOException{this.session=session;webSocketSet.add(this);System.out.println(webSocketSet);//开启一个线程对数据库中的数据进行轮询HttpSession httpSession= (HttpSession) config.getUserProperties().get(HttpSession.class.getName());
//        user user = (user) httpSession.getAttribute("currentUser");//user user = new user();// user.setId(27);//int lastInterfaceDateId =(int) Optional.ofNullable(httpSession.getAttribute("lastInterfaceDateId")).orElse(0);// thread.setUser(user);//user user2 = thread.getUser();// System.out.println(user2.getId()+"===========ID");//thread.setLastInterfaceDateId(lastInterfaceDateId);thread1.start();}/*** @ClassName: onClose* @Description: 连接关闭的操作*/@OnClosepublic void onClose(){thread.stopMe();webSocketSet.remove(this);}/*** @ClassName: onMessage* @Description: 给服务器发送消息告知数据库发生变化*/@OnMessagepublic void onMessage(String str) {System.out.println("onMessage:"+str);try {sendMessage(str);} catch (IOException e) {e.printStackTrace();}}/*** @ClassName: OnError* @Description: 出错的操作*/@OnErrorpublic void onError(Throwable error){System.out.println(error);error.printStackTrace();}/*** 这个方法与上面几个方法不一样。没有用注解,是根据自己需要添加的方法。* @throws IOException**/public void sendMessage(String str) throws IOException{//群发消息for(InterfaceDataListWebSocket item: webSocketSet){item.session.getBasicRemote().sendText(str);System.out.println("sendMessage:"+str);}}
}

单发:

****注意:单发直接修改群发的最后一个自定义方法就行

/*** 这个方法与上面几个方法不一样。没有用注解,是根据自己需要添加的方法。* @throws IOException**/
public void sendMessage(String str) throws IOException{this.session.getBasicRemote().sendText(str);System.out.println("sendMessage:"+str);}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部