使用tomcat方式实现websocket即时通讯服务端讲解
2021-05-14 07:27
标签:value 编写 日志 服务 containe 对象 引入 位置 soc 使用tomcat方式实现websocket即时通讯服务端讲解 第一种方案:使用Tomcat的方式实现 tomcat版本要求:tomcat7.0+。需要支持Javaee7 导入javeee-api的jar(如果已经引入可以忽略): pom.xml中加入: javaee-api 一:几个重要的注解(方法): 1.1:@ServerEndpoin(): 声明这是一个websocket服务; 需要指定访问该服务的地址。 在地址中可以指定参数,需要使用{}进行占位。 注解使用位置:类上面 示例: @ServerEndpoin("/websocket/{userId}") public class myTest(){ } 1.2:@OnOpen: 该方法将在建立连接后执行,会传入session对象; 可以通过@PathParam来获取url声明中参数 注解使用位置:方法中 用法示例: public void onOpen(Session session,@PathParam("userId") Integer userId) throws IOExcepthon{} 1.3:@OnClose: 该方法是在连接关闭后执行的 注解位置:方法上 使用示例: public void onClose(){} 1.4:@OnMessage: 该方法用于接收客户端发来的消息 参数: message:发来的消息数据 session:会话对象(也即是通道) 注解位置:方法 示例用法: public void onMessage(String message,Session session) throws IOException{} 1.5:@OnError: 出错的时候访问的。 注解位置:方法上 使用示例: public void onError(Session session,Throwable error){} 1.6:给客户端返回消息(或是给客户端发送消息): 使用session对象的getBasinRemoter().sendTest()方法 用法示例: session.getBasicRemoter().sendText("您发送的消息已经收到了"); 二:根据上面几个重要方法,编写客户端代码: @OnOpen public void onOpen(Session session, @PathParam("userName") String userName) throws IOException { log.info("=== 打开连接了==="); session.getBasicRemote().sendText("欢迎:"+userName+"访问系统"); } @OnMessage public void onMessage(String message,Session session, @PathParam("userName") String userName) throws IOException { log.info("==接收到客户端发来的消息是:{}",message); session.getBasicRemote().sendText("您好:"+userName+" 您发送的消息"+message+",系统已经收到...."); } 访问效果: 说明:websocket访问的协议是ws://而非http:// 上图中:橙色的是我发送的,下面对应的就是系统返回的。 查看服务器日志打印: 我们可以看到,通信已经建立了。代码已经放在git上了。欢迎大家一起学习。 下节预告:下节我们将使用spring框架来整合websocket的 使用tomcat方式实现websocket即时通讯服务端讲解 标签:value 编写 日志 服务 containe 对象 引入 位置 soc 原文地址:https://www.cnblogs.com/kaigejava/p/11993134.html
文章标题:使用tomcat方式实现websocket即时通讯服务端讲解
文章链接:http://soscw.com/index.php/essay/85502.html