之前在做客户管理系统的时候,客户经常给我们提出实施通讯的需求。当时,我们讨论出的方案是客户端间隔时间发送请求,访问服务器的应用,如果状态改变,则弹出消息给用户显示。
今天,在隐心技术论坛上发现一片帖子,作者是高手,使用js+flex+java开发实施通信socket。
Js+Flex+Java模拟的JsSocket组件使用说明
说明:图片、附件都需要登陆才能查看和下载,若没有注册请先注册账号再登陆即可。
JsSocket
演示地址1 演示地址2 隐聊 <----
应大家要求,现已将演示项目“隐聊”开源共享,代码共享地址:
TaoCode svn:http://code.taobao.org/svn/yisin-webchat/ 若没有账号,请自己去注册。
开源中国OSC svn:
- svn://git.oschina.net/yisin/webchat
JsSocket 是使用js + flex + java开发的一套基于web的socket通信组件,开发服务器消息推送的最佳选择
主要解决大家在开发web项目时需要用到前台与后台时时通信时的问题,除了HTML5的WebSocket之外,之前大家使用的方法一般为:1、页面间断刷新;2、使用ajax间断发送请求;3、使用DWR框架的comet长连接模拟实现,缺点大家都心知肚明
最新的HTML5的WebSocket,虽然很好的解决了这一问题,但IE9及以下版本不兼容HTML5,即不能使用WebSocket来达到目的,本组件因使用的 js + flex,几乎可以兼容所有浏览器,具体使用方法如下介绍
一、后台:
1、导入jar包:JsSocket.jar
2、写一个类SocketClient.java继承 com.yinsin.method.CallBack.java类,此类主要是用来处理客户端收发请求的,示例代码如下:
在这3个方法当中可以做你任何想做的事情
3、可以在web服务启动时,开启JsSocket服务:
a.在web.xml中配置web服务启动监听器
<listener>
<listener-class>com.yinsin.frame.init.InitCustomData</listener-class>
</listener>
b.在InitCustomData的contextInitialized方法中开启JsSocket服务
/** 接收两个参数,第1个参数未端口,第2个参数为CallBack.java的子类 */
TcpServerSocket.getInstance().startServer(10000,new SocketClient());
4、最后启动web服务,若控制台输出了“JsSocket # TCP Socket Server Started!”,即代表完成了搭建JsSocket的后台服务了。
二、前端
1、将所需要的flash资源文件导入到项目中,目录结构为:script/JsSocket/JsSocket.swf和script/JsSocket/playerProductInstall.swf,将此目录放到WebContent或者WebRoot下即可。
2、需要用到JsSocket的页面需要加载下组件所需要的代码:
<span><%=com.yinsin.util.CodeLoader.loaderCode(request.getContextPath())
%></span>
3、js调用初始化函数,初始化组件,连接服务器:
4、向服务器发送消息:
yinsin.sendData('Hello World!');
5、服务器向前端推送消息(补充):
sendDataToClient(Socket, String);
在SocketClient类中,调用此方法即可
本文章是转载文章,原文在隐心技术论坛http://yisin.88448.com/viewthread.php?tid=39949