< project xmlns = " http : / / maven . apache . org / POM / 4 . 0 . 0 " xmlns : xsi = " http : / / www . w 3 . org / 2001 / XMLSchema - instance " xsi : schemaLocation = " http : / / maven . apache . org / POM / 4 . 0 . 0 http : / / maven . apache . org / xsd / maven - 4 . 0 . 0 . xsd " > < modelVersion > 4 . 0 . 0 < / modelVersion > < groupId > com . chu < / groupId > < artifactId > webSocket < / artifactId > < version > 1 . 0 - SNAPSHOT < / version > < packaging > war < / packaging > < dependencies > < ! - - servlet - api - - > < dependency > < groupId > javax . servlet < / groupId > < artifactId > javax . servlet - api < / artifactId > < version > 3 . 1 . 0 < / version > < / dependency > < ! - - websocket - api - - > < dependency > < groupId > javax . websocket < / groupId > < artifactId > javax . websocket - api < / artifactId > < version > 1 . 1 < / version > < ! - - 设置 作用 域 默认 compile 编译 测试 运行 provided 编译 测试 runtime 测试 运行 test 测试 - - > < scope > provided < / scope > < / dependency > < ! - - JSON 转换 - - > < dependency > < groupId > com . fasterxml . jackson . core < / groupId > < artifactId > jackson - databind < / artifactId > < version > 2 . 7 . 4 < / version > < / dependency > < / dependencies > < ! - - < build > - - > < ! - - < plugins > - - > < ! - - maven 自带 的 tomcat 插件 需要 配置 对应 的 命令 tomcat 7 : run - - > < ! - - < plugin > - - > < ! - - < groupId > org . apache . tomcat . maven < / groupId > - - > < ! - - < artifactId > tomcat 7 - maven - plugin < / artifactId > - - > < ! - - < version > 2 . 2 < / version > - - > < ! - - < configuration > - - > < ! - - < port > 80 < / port > - - > < ! - - < path > / < / path > - - > < ! - - < uriEncoding > UTF - 8 < / uriEncoding > - - > < ! - - < / configuration > - - > < ! - - < / plugin > - - > < ! - - < / plugins > - - > < ! - - < / build > - - > < / project > package com . chu . controller ; import com . fasterxml . jackson . databind . ObjectMapper ; import javax . websocket . * ; import javax . websocket . server . PathParam ; import javax . websocket . server . ServerEndpoint ; import java . io . IOException ; import java . util . HashMap ; import java . util . Map ; / * 小 楚 想 要 发送 信息 给 小赵 这 个 信息 会 先 存储 在 服务器 再 由 服务器 发送 给 小赵 * / @ ServerEndpoint ( " / chat / { name } " ) public class ChatSocket { / / 定义 一个 Map 集合 , 用来 存放 登陆 到 服务器 的 客户 名称 和 Session private static Map < String , Session > mapMessage = new HashMap < > ( ) ; / / 首先 , 方法 名称 可以 自 定义 / / * 形参 - - - name - - - Session @ OnOpen / / 会话 开始 public void onOpen ( @ PathParam ( " name " ) String name , Session session ) { System . out . println ( " onOpen . . . . . " + name ) ; / / key - - - - - name value - - - - - session mapMessage . put ( name , session ) ; } / / 客户 机 信息 处理 * 形参 - - - Session session - - - String message @ OnMessage public void onMessage ( Session session , String message ) { System . out . println ( " onMessage . . . . . " + message ) ; / / 服务 端 给 客户 端 发 消息 , 走 的 不是 HTTP 而是 直接 推 送 过去 了 / / 获取 JSON 对象 ObjectMapper mapper = new ObjectMapper ( ) ; try { / / 获取 JSON 格式 的 信息 Map < String , String > map = mapper . readValue ( message , Map . class ) ; / / 获取 需要 发送 的 信息 : content String content = map . get ( " content " ) ; / / 获取 接收 信息 者 : 小赵 String receive = map . get ( " receive " ) ; / / 从事 先 定义 好 的 Map 中 获取 小赵 的 Session Session receiveSession = mapMessage . get ( receive ) ; / / 如果 小赵 的 Session 为 null if ( receiveSession = = null ) { / / 响应 : 对方 不 在线 session . getAsyncRemote ( ) . sendText ( " 对方 不 在线 " ) ; } else { / / 否则 将 接收 到 的 信息 发送 给 小赵 receiveSession . getAsyncRemote ( ) . sendText ( content ) ; } } catch ( IOException e ) { e . printStackTrace ( ) ; } } / / 会话 结束 @ OnClose public void onClose ( Session session ) { System . out . println ( " onClose . . . . . " + session ) ; } / / 会话 出现 异常 @ OnError public void onError ( Session session , Throwable e ) { try { e . printStackTrace ( ) ; session . close ( ) ; } catch ( IOException ex ) { ex . printStackTrace ( ) ; } } }" />
您当前的位置:首页 > 博客教程

websocket简单实现_websocket简单实现

时间:2023-11-18 18:26 阅读数:2388人阅读

●﹏●

⊙△⊙

>ω< Non-compliance ICP Filing

+▽+

蜂蜜加速器部分文章、数据、图片来自互联网,一切版权均归源网站或源作者所有。

如果侵犯了你的权益请来信告知删除。邮箱:xxxxxxx@qq.com