- //==========websocket
- (function($) {
- $.websocket = function(options) {
- var defaults = {
- domain: top.location.hostname,
- port:3398,
- protocol:""
- };
- var opts = $.extend(defaults,options);
- var szServer = "ws://" + opts.domain + ":" + opts.port + "/" + opts.protocol;
- var socket = null;
- var bOpen = false;
- var t1 = 0;
- var t2 = 0;
- var messageevent = {
- onInit:function(){
- if(!("WebSocket" in window) && !("MozWebSocket" in window)){
- return false;
- }
- if(("MozWebSocket" in window)){
- socket = new MozWebSocket(szServer);
- }else{
- socket = new WebSocket(szServer);
- }
- if(opts.onInit){
- opts.onInit();
- }
- },
- onOpen:function(event){
- bOpen = true;
- if(opts.onOpen){
- opts.onOpen(event);
- }
- },
- onSend:function(msg){
- t1 = new Date().getTime();
- if(opts.onSend){
- opts.onSend(msg);
- }
- socket.send(msg);
- },
- onMessage:function(msg){
- t2 = new Date().getTime();
- if(opts.onMessage){
- opts.onMessage(msg.data,t2 - t1);
- }
- },
- onError:function(event){
- if(opts.onError){
- opts.onError(event);
- }
- },
- onClose:function(event){
- if(opts.onclose){
- opts.onclose(event);
- }
- if(socket.close() != null){
- socket = null;
- }
- }
- }
- messageevent.onInit();
- socket.onopen = messageevent.onOpen;
- socket.onmessage = messageevent.onMessage;
- socket.onerror = messageevent.onError;
- socket.onclose = messageevent.onClose;
- this.send = function(pData){
- if(bOpen == false){
- return false;
- }
- messageevent.onSend(pData);
- return true;
- }
- this.close = function(){
- messageevent.onClose();
- }
- return this;
- };
- })(jQuery);
- ---------使用示例------------
- //=========启动一个websocket
- var Socket1 = $.websocket({
- domain:"www.qhnovel.com", //这是与服务器的域名或IP
- port:8080, //这是服务器端口号
- protocol:"text", //这东西可有可无,组合起来就是 ws://www.qhnovel.com:8080/test
- onOpen:function(event){
- alert("已经与服务端握手,onOpen可省略不写");
- },
- onError:function(event){
- alert("发生了错误,onError可省略不写");
- },
- onSend:function(msg){
- alert("发送数据额外的代码,可省略不写");
- },
- onMessage:function(result,nTime){
- alert("从服务端收到的数据:" + result);
- alert("最近一次发送数据到现在接收一共使用时间:" + nTime);
- }
- });
- //=========发送数据方式
- Socket1.send("要发送的数据");
- //=========关闭连接
- Socket1.close();
- Socket.bOpen == false 时候没有连接到服务端
- //该片段来自于http://www.codesnippet.cn/detail/0609201615041.html
来源: http://www.codesnippet.cn/detail/0609201615041.html