首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

WebSocket 教程(3)

WebSocket 教程(3)

WebSocket 服务端WebSocket 在服务端的实现非常丰富。Node.js、Java、C++、Python 等多种语言都有自己的解决方案。
以下,介绍我在学习 WebSocket 过程中接触过的 WebSocket 服务端解决方案。
Node.js常用的 Node 实现有以下三种。
JavaJava 的 web 一般都依托于 servlet 容器。
我使用过的 servlet 容器有:Tomcat、Jetty、Resin。其中Tomcat7、Jetty7及以上版本均开始支持 WebSocket(推荐较新的版本,因为随着版本的更迭,对 WebSocket 的支持可能有变更)。
此外,Spring 框架对 WebSocket 也提供了支持。
虽然,以上应用对于 WebSocket 都有各自的实现。但是,它们都遵循  的通信标准,并且 Java API 统一遵循  规范。所以,在实际编码中,API 差异不大。
SpringSpring 对于 WebSocket 的支持基于下面的 jar 包:
<dependency>  <groupId>org.springframework</groupId>  <artifactId>spring-websocket</artifactId>  <version>${spring.version}</version></dependency>
在 Spring 实现 WebSocket 服务器大概分为以下几步:
创建 WebSocket 处理器
扩展 TextWebSocketHandler 或 BinaryWebSocketHandler ,你可以覆写指定的方法。Spring 在收到 WebSocket 事件时,会自动调用事件对应的方法。
[url=][/url]
import org.springframework.web.socket.WebSocketHandler;import org.springframework.web.socket.WebSocketSession;import org.springframework.web.socket.TextMessage;public class MyHandler extends TextWebSocketHandler {    @Override    public void handleTextMessage(WebSocketSession session, TextMessage message) {        // ...    }}[url=][/url]

WebSocketHandler 源码如下,这意味着你的处理器大概可以处理哪些 WebSocket 事件:
[url=][/url]
public interface WebSocketHandler {   /**    * 建立连接后触发的回调    */   void afterConnectionEstablished(WebSocketSession session) throws Exception;   /**    * 收到消息时触发的回调    */   void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception;   /**    * 传输消息出错时触发的回调    */   void handleTransportError(WebSocketSession session, Throwable exception) throws Exception;   /**    * 断开连接后触发的回调    */   void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception;   /**    * 是否处理分片消息    */   boolean supportsPartialMessages();}[url=][/url]
返回列表