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

有实力营销型网站建设安康教育平台

有实力营销型网站建设,安康教育平台,苏州园区人才市场,专业网站设计工作室其实使用消息队列也可以实现会话#xff0c;直接前端监听指定的队列#xff0c;使用rabbitmq的分组还可以实现不同群聊的效果。 1、依赖搭建#xff1a; ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org… 其实使用消息队列也可以实现会话直接前端监听指定的队列使用rabbitmq的分组还可以实现不同群聊的效果。 1、依赖搭建 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdWebStock/artifactIdversion1.0-SNAPSHOT/versionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.7.8/versionrelativePath//parentdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-websocket/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency/dependenciespropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/properties/projectSpringBoot都已集成完毕了不用使用原生的WebStock。 2、配置运行 如果是工作中要单独起一个服务来操作这个比较好反正是微服务多一个少一个没啥的 WebStock连接配置、 package com.quxiao.config;import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.socket.BinaryMessage; import org.springframework.web.socket.CloseStatus; import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketSession; import org.springframework.web.socket.handler.AbstractWebSocketHandler;import java.time.LocalDateTime;/*** ws消息处理类*/ Component Slf4j public class MyWsHandler extends AbstractWebSocketHandler {AutowiredWsService wsService;Overridepublic void afterConnectionEstablished(WebSocketSession session) throws Exception {log.info(建立ws连接);WsSessionManager.add(session.getId(), session);}Overrideprotected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {log.info(发送文本消息);// 获得客户端传来的消息String payload message.getPayload();//这里也是一样,要取出前端传来的参数,判断发给谁.这里我就是发给了连接客户端自己.log.info(server 接收到消息 payload);wsService.sendMsg(session, server 发送给的消息 payload 发送时间: LocalDateTime.now().toString());String url session.getUri().toString();//使用?拼接参数,后端取出判断发给谁System.out.println(获取到的参数: url.substring(url.indexOf(?) 1));}Overrideprotected void handleBinaryMessage(WebSocketSession session, BinaryMessage message) throws Exception {log.info(发送二进制消息);}Overridepublic void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {log.error(异常处理);WsSessionManager.removeAndClose(session.getId());}Overridepublic void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {log.info(关闭ws连接);WsSessionManager.removeAndClose(session.getId());} }package com.quxiao.config;import lombok.extern.slf4j.Slf4j; import org.springframework.web.socket.WebSocketSession;import java.io.IOException; import java.util.concurrent.ConcurrentHashMap;Slf4j public class WsSessionManager {/*** 保存连接 session 的地方*/public static ConcurrentHashMapString, WebSocketSession SESSION_POOL new ConcurrentHashMap();/*** 添加 session** param key*/public static void add(String key, WebSocketSession session) {// 添加 sessionSESSION_POOL.put(key, session);}/*** 删除 session,会返回删除的 session** param key* return*/public static WebSocketSession remove(String key) {// 删除 sessionreturn SESSION_POOL.remove(key);}/*** 删除并同步关闭连接** param key*/public static void removeAndClose(String key) {WebSocketSession session remove(key);if (session ! null) {try {// 关闭连接session.close();} catch (IOException e) {// todo: 关闭出现异常处理e.printStackTrace();}}}/*** 获得 session** param key* return*/public static WebSocketSession get(String key) {// 获得 sessionreturn SESSION_POOL.get(key);} }package com.quxiao.config;import org.springframework.beans.factory.annotation.Autowired; 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;Configuration EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer {Autowiredprivate MyWsHandler myWsHandler;Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {registry.addHandler(myWsHandler, myWs)//允许跨域.setAllowedOrigins(*);} }这里有几个后续逻辑 (1)、连接时通过前端的参数或者对其按登陆人信息绑定连接消息。 (2)、收到一个消息发送给谁就得需要前端传来参数例如某个群的id然后通过群绑定人员因为(1)中通过keyvalue人员id为keyvalue时连接信息。 直接遍历这个群下面的所有人员id获取已经连接的信息发送给他们。这里还要搞一个表存储群消息log。这样其他群员连接时可以获取到以往的消息。 发送消息工具类 package com.quxiao.config;import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketSession;import java.io.IOException;/*** ws操作相关服务*/ Service Slf4j public class WsServiceUtil {/*** 发送消息* param session* param text* return* throws IOException*/public void sendMsg(WebSocketSession session, String text) throws IOException {session.sendMessage(new TextMessage(text));}/*** 广播消息* param text* return* throws IOException*/public void broadcastMsg(String text) throws IOException {for (WebSocketSession session: WsSessionManager.SESSION_POOL.values()) {session.sendMessage(new TextMessage(text));}}}这里广播我就是遍历了储存连接消息的map容器。 package com.quxiao.controller;import com.quxiao.config.WsServiceUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletRequest;RestController RequestMapping(/put) public class MessageHandler {AutowiredWsServiceUtil wsServiceUtil;PostMapping(/t1/{test})public void t1(PathVariable(test) String text) {try {wsServiceUtil.broadcastMsg(Thread.currentThread().getName() : text);} catch (Exception e) {throw new RuntimeException(e);}}}3、 前端测试页面 !DOCTYPE HTML html headtitleMy WebSocket/title /headbody input idtext typetext / button onclicksend()Send/button button onclickcloseWebSocket()Close/button div idmessage/div/bodyscript typetext/javascriptlet ws null;//判断当前浏览器是否支持WebSocketif (WebSocket in window) {ws new WebSocket(ws://localhost:8080/myWs?2002);}else {alert(当前浏览器 Not support websocket)}//连接发生错误的回调方法ws.onerror function () {setMessageInnerHTML(WebSocket连接发生错误);};//连接成功建立的回调方法ws.onopen function(event) {console.log(ws调用连接成功回调方法)//ws.send()}//接收到消息的回调方法ws.onmessage function(message) {console.log(接收消息 message.data);if (typeof(message.data) string) {setMessageInnerHTML(message.data);}}//ws连接断开的回调方法ws.onclose function(e) {console.log(ws连接断开)//console.log(e)setMessageInnerHTML(ws close);}//将消息显示在网页上function setMessageInnerHTML(innerHTML) {console.log(innerHTML)document.getElementById(message).innerHTML 接收的消息: innerHTML br/;}//关闭连接function closeWebSocket() {ws.close();}//发送消息function send(msg) {if(!msg){msg document.getElementById(text).value;document.getElementById(message).innerHTML 发送的消息: msg br/;ws.send(msg);}} /script /html 4、总结 所以最重要的是这个消息发给谁         后端要做的就是需要根据不同的群、人员标识符去发送消息 前端需要做的就是         传入不同的标识符如果是私聊就得传人员id如果是群聊就需要传入群id。
http://www.w-s-a.com/news/804381/

相关文章:

  • 乌兰察布做网站公司爱站网关键词挖掘工具站长工具
  • 白银网站建设白银申请网站空间怎么做
  • 免费炫酷网站模板网站建设需要用到什么软件有哪些
  • 电商网站开发 文献综述大型网站建设企业
  • 如何在建设部网站补录项目单仁牛商
  • 社保网站上做减员一直不审核软件程序开发
  • 网站友情链接购买天元建设集团有限公司资质
  • 南山商城网站建设哪家技术好株洲seo网站优化软件
  • 服务类网站建设18款禁用网站app直播
  • 电子商务网站建设需要物流网站开发公司
  • 网站的系统建设方式有哪些内容宁波网站建设公司
  • 网站开发 技术方案品牌建设总要求
  • 中卫网站建站设计seo专员的工作内容
  • h5商城网站是什么意思.net 网站开发框架
  • 西安网站改版的公司软件外包是什么意思
  • 网站建设了解眉山网站优化
  • 做网站用php还是node如何申请网站域名流程
  • 销售公司怎么做网站删除wordpress
  • 毕节网站怎么做seohtml代码特效银河系
  • 淄博品质网站建设网站引导页案例
  • 网站建设虚拟空间小豹子韬韬是哪个网站做的
  • 网络司网站如何建立公司网站建议和规则
  • 织梦网站模板后台密码找回企业vi设计公司性价比高
  • php 爬取网站所有链接传奇手游发布网站
  • 免费软文网站wordpress中文名注册
  • 企业网站建设研究目的意义怎样设计一个公司网站
  • 怎么架构网站便民信息发布平台
  • 网站 建设 现状网站推广合同需要缴纳印花税吗
  • 熊猫头表情包制作网站wordpress 缺省目录
  • 网站浏览图片怎么做的群晖wordpress升级5.0