原创:Javascript Websocket客户端封装
调试中,马马虎虎能用
var LeesWebSocket = function (options) {
this.defaults = {
host: "127.0.0.1",
port: 2015, // callbacks
onOpen: function () { },
onClose: function () { },
onMessage: function (evt) { },
onError: function () { }
}
//调试用---------------------------
mLCQ = new LeesCircleQueue(40); function Trace(s) {
var t = new Date(); mLCQ.Push(t.getHours() + ":" + t.getMinutes() + ":" + t.getSeconds() + " :" + s + "<br>");
showDebuginfo();
}
function showDebuginfo() {
var ss = mLCQ.GetAllItem();
var sb = ''; for (var i = 0; i < ss.length; i++) {
sb += (i + 1) + ":" + ss[i] + "<br>";
}
$('#debug').html(sb);
}
//-------------------------------
//-------------------------------
var opt = $.extend({}, this.defaults, options);
var _this = this;
var wsSocket = null;
this.bIsConnected = false;
var bIsConnecting = false;
this._LWS_Host = "ws://" + opt.host + ":" + opt.port; this.Connect = function () {
if (bIsConnecting)
return;
bIsConnecting = true;
try {
if ("WebSocket" in window) {
wsSocket = new WebSocket(this._LWS_Host);
}
else if ("MozWebSocket" in window) {
wsSocket = new MozWebSocket(this._LWS_Host);
}
wsSocket.onopen = WSonOpen;
wsSocket.onclose = WSonClose;
wsSocket.onmessage = WSonMessage;
wsSocket.onerror = WSonError;
} catch (ex) {
alert(ex);
}
bIsConnecting = false;
}
this.Send = function (s) {
Trace(s);
if (_this.bIsConnected) {
wsSocket.send(s);
return true;
}
return false;
}
this.IsConnected = function () {
return this.bIsConnected;
}
function WSonOpen() {
_this.bIsConnected = true;
opt.onOpen(); }
function WSonMessage(evt) {
opt.onMessage(evt); }
function WSonClose() {
_this.bIsConnected = false;
wsSocket = null;
opt.onClose(); }
function WSonError(evt) {
_this.bIsConnected = false;
wsSocket = null;
opt.onError(); }
}
原创:Javascript Websocket客户端封装的更多相关文章
- [原创]Javascript模拟“类”的综合实现方式以及部分细节【截至ES6】
[原创]Javascript模拟“类”的综合实现方式以及部分细节[截至ES6] 前言 最近几个旧项目里使用的图片编辑插件出现Bug, 经Review 后确定需要在其内外均做些改动,但是头疼的发现部 ...
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目
ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理(序列化为 ...
- netty系列之:使用netty搭建websocket客户端
目录 简介 浏览器客户端 netty对websocket客户端的支持 WebSocketClientHandshaker WebSocketClientCompressionHandler netty ...
- JavaScript获取客户端计算机硬件及系统等信息的方法
JavaScript获取客户端计算机硬件及系统等信息的方法 JavaScript 获取客户端计算机硬件及系统信息 通过WMI来实现获取客户端计算机硬件及系统信息: function getSysInf ...
- javascript通用事件封装
随着最近几年Html5的兴起,越来越多的应用采用html5进行实现,一个优秀的网页应用不但需要美观简洁的UI界面,更需要一个良好的交互.网页应用大部分的交互需要用javascript事件进行实现.虽然 ...
- 我自己的Javascript 库,封装了一些常用函数 Kingwell.js
我自己的Javascript 库,封装了一些常用函数 Kingwell.js 博客分类: Javascript javascript 库javascript库 现在Javascript库海量,流行的 ...
- 用javascript得到客户端IP的新方法
javascript得到客户端IP的新方法 很久以来,我都是经过http://fw.qq.com/ipaddress来得到客户端用户的IP,这个方法简单.快速.实用 . 我们调用它的写法是: < ...
- 【转】SocketRocket:iOS WebSocket客户端开源框架
原文网址:http://blog.csdn.net/zmp1123/article/details/44015507 WebSocket: WebSocket通信协议实现的是基于浏览器的原生socke ...
- JavaScript设计模式之一封装
对于熟悉C#和Java的兄弟们,面向对象的三大思想(封装,继承,多态)肯定是了解的,今天我想讲讲如何在Javascript中利用封装这个特性,开讲! 我们会把现实中的一些事物抽象成一个Class并且把 ...
随机推荐
- QT: QByteArray储存二进制数据(包括结构体,自定义QT对象)
因为利用QByteArray可以很方便的利用其API对内存数据进行访问和修改, 构建数据库blob字段时必不可少; 那如何向blob内写入自定义的结构体和类 1. 利用memcpy拷贝内存数据 / ...
- 分享原创可复用且非侵入性代码生成工具(for .net)
入行IT十年了,这是本人第一次网上’献丑‘.迫于工作压力,花了大半年时间写了这个生成器以辅助开发.如有价值请多多给予建议,谢谢 好了,废话少说,开动! QA. 1.为什么要用代码生成器? 当然是为了快 ...
- ambassador docker container linking
http://docs.docker.com/articles/ambassador_pattern_linking/
- ruby 把字符串转为正则匹配表达式
需求 函数,需要通过参数传递字符串,用来做正则匹配 reg = '[0-9]+' def func(str, reg) str.scan(reg) end 由于 reg 在其它地方定义, reg 是字 ...
- DROP--删除表
DROP TABLE table_name; 说明: 1.必须有表的权限 2.表不能有外键约束
- java基础常识
现在总结一些经常接触到的java名词 一:java技术分类 javase:java standard editor:java标准版,主要定义java经常使用的API(Application Progr ...
- 你了解C语言中的关键字volatile吗?
我们在学习C语言的32个关键字时,大家都不太注意volatile这个关键字,volatile是一个类型修饰符.volatile的中文意思是“易变的”.那么在程序中我们在什么情况下才使用他呢?我们在分析 ...
- modelsim 仿真时出现无限迭代(iteration reach limitation)的原因及其解决办法
modelsim 仿真时出现无限迭代(iteration reach limitation) 出现这种故障的原因: 一般都是代码里出现的组合逻辑无限循环或者组合逻辑A产生signal_A,signa ...
- angularjs的一些优化小技巧
尽可能少调用 ng-repeat ng-repeat默认会创建很多监听器,所以在数据量很大的时候,这个非常消耗页面性能,我觉的只有在当需要经常更新数据列表的时候才需要用ng-repeat,要不然放那么 ...
- JAXB - XML Schema Types, Defining Types for XML Elements Without Content
Types for XML elements are constructed using xsd:complexType, even if they do not have content. The ...