原创:Javascript Websocket客户端封装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
调试中,马马虎虎能用<br>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();
 
    }
}

 

posted @   吾非无心  阅读(3094)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示