tomcat服务器的消息推送,基于Tomcat7、Java、WebSocket的服务器推送聊天室实例.pdf

基基于于Tomcat7、、Java、、WebSocket的的服服务务器器推推送送聊聊天天室室实实例例

前前言言

HT ML5 WebSocket实现了服务器与浏览器的双向通讯,双向通讯使服务器消息推送开发 加简单,最常见的就是即时通讯和对

信息实时性要求比较高的应用。以前的服务器消息推送大部分采用的都是“轮询”和“长连接”技术,这两中技术都会对服务器产生

相当大的开销,而且实时性不是特别高。WebSocket技术对只会产生很小的开销,并且实时性特别高。下面就开始讲解如何利用

WebSocket技术开发聊天室。在这个实例中,采用的是Tomcat7服务器,每个服务器对于WebSocket的实现都是不一样的,所以

这个实例只能在Tomcat服务器中运行,不过目前Spring 已经推出了WebSocket的A PI,能够兼容各个服务器的实现,大家可以查

阅相关的资料进行了解,在这里就不介绍了,下图是聊天室的效果图:

在这里实例中,实现了消息的实时推送,还实现了聊天用户的上下线通知。下面就开始具体讲解如何实现。

后后台台处处理理

Tomcat实现WebSocket的主要是依靠org.apache.catalina.web ocket.Me ageInbound这个类,这个类的在{TOMCA T_ HOME}/li

b/catalina.j ar中,所以你开发的时候需要将catalina.j ar和tomcat-coyote.j ar引入进来,下面这段代码就是暴露给客户端连接地址

的Servlet:

package com.ibcio;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServletRequest;

import org.apache.catalina.websocket.StreamInbound;

WebServlet(urlPatterns = { "/message"})

//如果要接收浏览器的ws://协议的请求就必须实现WebSocketServlet这个类

public class WebSocketMessageServlet extends org.apache.catalina.websocket.WebSocketSer

vlet {

private static final long serialVersionUID = 1L;

public static int ONLINE_USER_COUNT = 1;

public String getUser(HttpServletRequest request){

return (String) request.getSession().getAttribute("user");

}

//跟平常Servlet不同的是,需要实现createWebSocketInbound,在这里初始化自定义的WebSocket连接

对象

Override

protected StreamInbound createWebSocketInbound(String subProtocol,HttpServletRequest

request) {

return new WebSocketMessageInbound(this.getUser(request));

}

}

这个Servlet跟普通的Servlet有些不同,继承的WebSocketServlet类,并且要重写createWebSocketInbound方法。这个类中Se io

n中的u er属性是用户进入index .j p的时候设置的,记录当前用户的昵称。下面就是自己实现的WebSocket连接对象类WebSocke

tMe ageInbound类的代码:

package com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值