为了账号安全,请及时绑定邮箱和手机立即绑定

使用tomcat方式实现websocket即时通讯服务端讲解

标签:
Java

使用tomcat方式实现websocket即时通讯服务端讲解

第一种方案:使用Tomcat的方式实现

tomcat版本要求:tomcat7.0+。需要支持Javaee7

导入javeee-api的jar(如果已经引入可以忽略):

pom.xml中加入:

 <dependency>

      <groupId>javax</groupId>

      <artifactId>javaee-api</artifactId>

      <version>7.0</version>

      <scope>provided</scope>

 </dependency>

一:几个重要的注解(方法):

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("您发送的消息已经收到了");

二:根据上面几个重要方法,编写客户端代码:

https://img1.sycdn.imooc.com//5acb3c8700013dc501600160.jpg

@OnOpen

public void onOpen(Session session, @PathParam("userName") String userName) throws IOException {

log.info("=== 打开连接了===");

session.getBasicRemote().sendText("欢迎:"+userName+"访问系统");

}

https://img1.sycdn.imooc.com//5acb3c8700013dc501600160.jpg

@OnMessage

public void onMessage(String message,Session session, @PathParam("userName") String userName) throws IOException {

log.info("==接收到客户端发来的消息是:{}",message);

session.getBasicRemote().sendText("您好:"+userName+" 您发送的消息"+message+",系统已经收到....");

}

访问效果:

https://img1.sycdn.imooc.com//5acb3c8700013dc501600160.jpg

说明:websocket访问的协议是ws://而非http://

上图中:橙色的是我发送的,下面对应的就是系统返回的。

查看服务器日志打印:

https://img1.sycdn.imooc.com//5acb3c8700013dc501600160.jpg

我们可以看到,通信已经建立了。代码已经放在git上了。欢迎大家一起学习。

下节预告:下节我们将使用spring框架来整合websocket的


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

0 评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
113
粉丝
13
获赞与收藏
24

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消