一步一步教你如何使用WebSocket实现群聊
2017-05-16 09:42
295 查看
先从WebSocket的实现开始。
(一)首先创建一个Web项目,在lib中导入WebSocket的jar包。(注意jar是从Tomcat7.0的lib里面拷过来,6.0之前还没有这个)
(二)配置WebSocket。实现API中ServerApplicationConfig接口
接口里面有两个方法
getAnnotatedEndpointClasses(Set<Class<?>> scan);//使用注解方式启动
getEndpointConfigs(Set<Class<? extends Endpoint>> scan);//使用接口方式启动
这里我们使用的3.0的标准,所以无web.xml。所以我们使用注解的方式启动(后面会将如何配置)。这个方法的作用。类似于web里面的Interceptor,起到过滤的作用。
(三)创建一个任意的类,不需要继承或实现任何的类。因为我们采用的注解的方式去写WebSocket。
1.@ServerEndpoint("/chatSocket")给类添加上这个注解。Tomcat在启动时会自动识别这个类是WebSocket类。括号里面填访问的路由地址。
2.WebSocket也和Servlet类似,它的生命周期有
@onOpen (启动),@onMessage (发送消息),@onClose (关闭)。首先创建一个方法,然后给这个方法添加@onOpen 注解。这个方法就会在与客户端启动通信通道时进行交互。每次交互都是一次会话所以需要给方法传入Session对象,这个会话可以拿到从客户端传过来的数据。例子:
@OnOpen
public void open(Session session){
//一个session代表一个回话
System.out.println("会话id:"+session.getId());
session.getBasicRemote().sendText("服务器:你好,too");//服务端向客户端传送数据
}
其余的生命周期也类似。
(一)首先创建一个Web项目,在lib中导入WebSocket的jar包。(注意jar是从Tomcat7.0的lib里面拷过来,6.0之前还没有这个)
(二)配置WebSocket。实现API中ServerApplicationConfig接口
接口里面有两个方法
getAnnotatedEndpointClasses(Set<Class<?>> scan);//使用注解方式启动
getEndpointConfigs(Set<Class<? extends Endpoint>> scan);//使用接口方式启动
这里我们使用的3.0的标准,所以无web.xml。所以我们使用注解的方式启动(后面会将如何配置)。这个方法的作用。类似于web里面的Interceptor,起到过滤的作用。
(三)创建一个任意的类,不需要继承或实现任何的类。因为我们采用的注解的方式去写WebSocket。
1.@ServerEndpoint("/chatSocket")给类添加上这个注解。Tomcat在启动时会自动识别这个类是WebSocket类。括号里面填访问的路由地址。
2.WebSocket也和Servlet类似,它的生命周期有
@onOpen (启动),@onMessage (发送消息),@onClose (关闭)。首先创建一个方法,然后给这个方法添加@onOpen 注解。这个方法就会在与客户端启动通信通道时进行交互。每次交互都是一次会话所以需要给方法传入Session对象,这个会话可以拿到从客户端传过来的数据。例子:
@OnOpen
public void open(Session session){
//一个session代表一个回话
System.out.println("会话id:"+session.getId());
session.getBasicRemote().sendText("服务器:你好,too");//服务端向客户端传送数据
}
其余的生命周期也类似。
相关文章推荐
- struts2框架如何使用websocket实现web程序消息推送
- Android中脱离WebView使用WebSocket实现群聊和推送功能
- Android中使用WebSocket实现群聊和消息推送功能(不使用WebView)
- 使用WebSocket实现即使通讯(实现一个群聊的聊天室)
- 使用WebSocket实现即使通讯(实现一个群聊的聊天室)
- 一步一步学WebSocket(二) 使用SuperWebSocket实现自己的服务端
- 使用WebSocket实现即时通讯(一个群聊的聊天室)
- C++如何避免使用rand() % xxx的方式实现类似抽奖概率类的问题
- 如何在JSP页面中使用JSTL标签实现if和if-else判断
- 如何使用dropdownlist实现listview分页?
- 在Spring Boot框架下使用WebSocket实现聊天功能
- 使用Redis如何实现分布式锁?
- tomcat7中使用websocket时如何调优
- [转载红鱼儿]Delphi实现微信开发(3)如何使用multipart/form-data格式上传文件
- 如何实现SDI程序使用CSplitterWnd创建的多个视图的动态地显示和关闭视图
- iOS 如何在程序中使用NSCache实现缓存
- 如何用java实现不同编码方式字符串的转换(包含异常处理、重复不终止输入、缓冲区bufferedreader的使用)
- 什么是对象序列化?如何实现?什么情况下使用?
- 关于如何使用websocket 接收并显示图片或者操作二进制
- MF中使用GPRS:如何通过一个串口终端实现GPRS Modem拨号上网