使用tomcat方式实现websocket即时通讯服务端讲解
使用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("您发送的消息已经收到了");
二:根据上面几个重要方法,编写客户端代码:
@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的

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
除手机平板和PC 华为终端明年全线搭载鸿蒙OS
12月9日消息,昨日在华为全球旗舰店·深圳万象天地店举行的“HUAWEI Talk主题分享”会中,华为消费者BG软件部总裁王成录透露,明年华为除了手机、平板和电脑,其他终端产品将全线搭载鸿蒙OS,并在海内外同步推进,鸿蒙OS的全面开源也将在明年8月正式开源。 王成录表示,华为手机仍然会优先选用安卓,只有在实在用不了的情况下才会采用鸿蒙。此外,鸿蒙也在不断完善和成熟的过程中,预计明年8月鸿蒙将正式全面开源。 华为消费者业务CEO余承东在介绍鸿蒙OS开发初衷时表示,随着全场景智慧时代的到来,华为认为需要进一步提升操作系统的跨平台能力,包括支持全场景、跨多设备和平台的能力以及应对低时延、高安全性挑战的能力,因此逐渐形成了鸿蒙OS的雏形。 官方介绍,鸿蒙OS拥有四大特性: 1、分布式架构首次用于终端OS,实现跨终端无缝协同体验 2、确定时延引擎和高性能IPC技术实现系统天生流畅 3、基于微内核架构重塑终端设备可信安全 4、通过统一IDE支撑一次开发,多端部署,实现跨终端生态共享 余承东强调,鸿蒙OS出发点和Android、iOS都不一样,是一款全新的基于微内核的面向全场景的分布式操作系统,能够...
- 下一篇
怎么设置tomcat在get请求的中文也不乱码?两种情况下配置
我们都知道,get请求和post请求的一个比较显著区别就是,在使用post请求的时候,中文不会乱码,但是在使用get请求的时候,如果url后面带有中文就会乱码了。那么这个怎么解决呢? 前提:配置项目的encoding编码位utf-8的前提下。如,使用spring项目的时候,可以在spring的配置文件中添加如下的: <filter> <filter-name>encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> &l...
相关文章
文章评论
共有0条评论来说两句吧...