博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jquery websocket 插件
阅读量:5759 次
发布时间:2019-06-18

本文共 3646 字,大约阅读时间需要 12 分钟。

//==========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);

我把自己网站后台管理部分重新写了一遍,以前用的ajax,因为采集部分我做的非常强大,而且是网页版的,python作为服务端,我需要能够实时与浏览器通信,这样才知道采集进度,之前用php curl 管道进行的批量采集,ajax返回进度,不是很实时,并且太死了,折腾了很久,于是我换成了websocket达到实时得知服务端详细信息

 

        这是我把websocket封装成了jquery插件,主要是为了更方便调用和让代码更加简洁,我后台管理是做成的一个web桌面形式,打开每个功能应用,主要是采集,必须使用websocket开启一个链接与python做的服务端进行通信,用原始的方式,会让结构非常不清晰,那就封装起来用吧,看下面例子

 

 

这是我这个websocket插件使用方法

//=========启动一个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 时候没有连接到服务端

 

websocket客户端本身就比较简单,这里只是在大量使用时候结构更清晰,我在与python服务端进行通信时候数据是通过了base64编码,然后用json 方式发送过来的,js 解码 base64出现中文乱码可看我另一篇文章

 

python实现新版websocket服务端请看我另一篇文章

 

代码我给的都是完整的,也比较清晰,要用的人直接复制粘贴就可以了

 

来自:http://0x14.iteye.com

转载地址:http://aplkx.baihongyu.com/

你可能感兴趣的文章
大话 程序猿 眼里的 接口
查看>>
struts2用了哪几种模式
查看>>
replace函数结合正则表达式实现转化成驼峰与转化成连接字符串的方法
查看>>
ubuntu 初学常用命令
查看>>
WCF客户端与服务端通信简单入门教程
查看>>
android 资源种类及使用
查看>>
Explorer程序出错
查看>>
Centos7同时运行多个Tomcat
查看>>
使用CocoaPods过程中的几个问题
查看>>
我的友情链接
查看>>
为eclipse安装maven插件
查看>>
公司新年第一次全员大会小记
查看>>
JAVA8 Stream 浅析
查看>>
inner join on, left join on, right join on要详细点的介绍
查看>>
SAS vs SSD对比测试MySQL tpch性能
查看>>
Spring boot 整合CXF webservice 全部被拦截的问题
查看>>
Pinpoint跨节点统计失败
查看>>
【Canal源码分析】Canal Server的启动和停止过程
查看>>
机房带宽暴涨问题分析及解决方法
查看>>
iOS 绕过相册权限漏洞
查看>>