当前位置: 首页 > news >正文

用路由器做网站开发游戏怎么赚钱

用路由器做网站,开发游戏怎么赚钱,长沙建网站理,搭建网站需要哪些步骤首先获取消息的内容#xff0c;即payload。将payload转换为JSONObject对象#xff0c;并从中获取消息类型type。如果消息类型是join#xff0c;则从消息中获取群组ID#xff0c;并将当前WebSocketSession的ID加入到该群组对应的Set中。如果消息类型是lea…首先获取消息的内容即payload。将payload转换为JSONObject对象并从中获取消息类型type。如果消息类型是join则从消息中获取群组ID并将当前WebSocketSession的ID加入到该群组对应的Set中。如果消息类型是leave则从消息中获取群组ID并从该群组对应的Set中移除当前WebSocketSession的ID。如果消息类型是message则从消息中获取群组ID并获取该群组对应的所有WebSocketSession逐一向这些Session发送消息。 其中groups和sessions是两个Map分别用来存储群组与其对应的WebSocketSessions。computeIfAbsent和computeIfPresent方法分别用来向Map中添加元素和更新元素。sendMessage方法用来向客户端发送消息。 导入依赖 !-- spring-boot-starter-websocket依赖 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-websocket/artifactId/dependency 创建MyWebSocketHandler类 import com.songzixain.service.MyWebSocketHandler; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.config.annotation.EnableWebSocket; import org.springframework.web.socket.config.annotation.WebSocketConfigurer; import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; import org.springframework.web.socket.server.standard.ServerEndpointExporter;/*** p* Description: WebSocketConfig配置类* /p** author * version * create * see */Configuration EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer {Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {registry.addHandler(new MyWebSocketHandler(), /ws).setAllowedOrigins(*); 创建MyWebSocketHandler类 这段代码是一个WebSocket处理器中的消息处理方法用来处理WebSocket客户端发送的消息 /*** p* Description: MyWebSocketHandler用 来处理WebSocket客户端发送的消息* /p** author * version * create * see */ Slf4j public class MyWebSocketHandler implements WebSocketHandler {private static final MapString, WebSocketSession sessions new ConcurrentHashMap();private static final MapString, SetString groups new ConcurrentHashMap();Overridepublic void afterConnectionEstablished(WebSocketSession session) throws Exception {sessions.put(session.getId(), session);}Overridepublic void handleMessage(WebSocketSession session, WebSocketMessage? message) throws Exception {String payload message.getPayload().toString();log.info(接收到的用户消息 {}, payload);JSONObject json JSON.parseObject(payload);String type json.getString(type);// 用户加入了群组if (join.equals(type)) {String groupId json.getString(groupId);groups.computeIfAbsent(groupId, k - new HashSet()).add(session.getId());} else if (leave.equals(type)) {String groupId json.getString(groupId);groups.computeIfPresent(groupId, (k, v) - {v.remove(session.getId());return v;});// 接收到了用户消息} else if (message.equals(type)) {String groupId json.getString(groupId);SetString groupSessions groups.get(groupId);for (String sessionId : groupSessions) {WebSocketSession s sessions.get(sessionId);if (s ! null s.isOpen()) {s.sendMessage(new TextMessage(payload));}}}}Overridepublic void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {sessions.remove(session.getId());}Overridepublic void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {sessions.remove(session.getId());groups.values().forEach(v - v.remove(session.getId()));}Overridepublic boolean supportsPartialMessages() {return false;} } 前端的html测试页面 !DOCTYPE html html headmeta charsetUTF-8titleWebSocket Chat/title /head bodydiv idoutput/divinput idinput typetext placeholderType your messagebutton idsendSend/buttonbutton idjoinJoin Group/buttonbutton idleaveLeave Group/buttonscriptvar socket new WebSocket(ws://localhost:8080/ws);socket.onopen function(event) {console.log(WebSocket connected);};socket.onmessage function(event) {var message event.data;var output document.getElementById(output);var p document.createElement(p);p.innerText message;output.appendChild(p);};socket.onclose function(event) {console.log(WebSocket disconnected);};var sendButton document.getElementById(send);var input document.getElementById(input);var joinButton document.getElementById(join);var leaveButton document.getElementById(leave);sendButton.addEventListener(click, function() {var message {userId: 1,type: message,groupId: group1,content: input.value};socket.send(JSON.stringify(message));input.value ;});joinButton.addEventListener(click, function() {var message {userId: 1,type: join,groupId: group1};socket.send(JSON.stringify(message));});leaveButton.addEventListener(click, function() {var message {userId: 1,type: leave,groupId: group1};socket.send(JSON.stringify(message));});socket.onmessage function(event) {var message event.data;var output document.getElementById(output);var p document.createElement(p);p.innerText message;output.appendChild(p); };/script /body /html 这个WebSocket处理器实现了群聊功能并支持用户加入和离开群组时向群组中的其他用户发送通知。 启动Spring Boot项目.点击加入群主,然后就可以发送消息了
http://www.zqtcl.cn/news/420489/

相关文章:

  • 设计素材网站线上网站数据报表
  • 做一个小型网站多少钱wordpress 手机商城模板
  • 谷歌网站收录提交金山网站建设关键词排名
  • 域名备案中网站可以开通个人网站开发多少钱
  • 西安维护网站广州公司网站设计制作
  • 荆门做网站网络推广公司多久能回本
  • 搜索网站存在的关键字室内设计公司排名榜
  • 响应式网页开发昆明网站排名优化公司哪家好
  • 如东建设局网站线上购物平台
  • 重庆网站推广营销淘宝的网站怎么做的好
  • 重庆企业建站模板珠海企业官网设计制作
  • 网页作图软件东莞优化哪家好
  • 专业的商城网站开发深圳网站界面设计
  • 做网站需要自备服务器吗专业生产车间设计图纸网站
  • 用vs2010做网站教程昆明模板建站定制网站
  • dedecms网站模板下载做网站价格需要多少钱
  • 昆明餐饮网站建设建电影网站教程
  • 怎么做服装网站wordpress 主题 三栏
  • 个人可否建立网站全包装修
  • 哈尔滨网站建设贴吧网站建设推广好做吗
  • 南宁网站建设排名制作网站的公司做网站去哪里找
  • 网站开发外贸材料信息价查询网站
  • 推荐几个好的seo网站程序模板WordPress博客建站系统
  • 手机网站建设推广方案ppt模板wordpress文章阅读统计
  • 自己可以接单做网站吗建设项目所在地公共媒体网站
  • 哈尔滨网站制作哪儿好薇学校网站首页代码html
  • 网站建设与设计 毕业设计企业自助网站建设
  • ip库网站源码佛山网站开发公司
  • 婚庆网站怎么设计模板电子商务系统规划方案
  • 东莞中企动力做网站wordpress结合tornado