我如何测试我的WebSocket是在JavaScript中开发的



我已经创建了WebSocket.js,但不幸的是,由于数据不可用,我无法测试它。要求是数据来自不同的来源,所以我有多个套接字。注意:我想特别测试一下我的插座。onMessage的行为适用于不同的套接字。请查看下面的代码片段:

var webSocket;
var txQueue = [];
var defaultReconnectTimeout = 1000; //will be multiplied by 2 and saved into reconnectTimeout on each try
var reconnectTimeout = defaultReconnectTimeout;
var registerWebSocketHandlers = function(webSocket) {
    webSocket.onclose = function(){
        setTimeout(service.reopen, reconnectTimeout *= 2);
    };
    webSocket.onopen = function(e) {
        reconnectTimeout = defaultReconnectTimeout; //reset this
        deferredSend();
    };
    webSocket.onerror = function(e) {
        throw new Error("[WebSocket] An error occured " + e);
    };
}
var uniqid = function() {
    return (new Date().getTime()).toString(16);
}

var deferredSend = function() {
    if(!service.isOpen()) {
        $timeout(deferredSend, 100);
        return;
    }
    while(txQueue.length && service.isOpen()) {
        var payload = txQueue.shift();
        webSocket.send(typeof payload === 'string' ? payload : JSON.stringify(payload));
    }
};
var createNewWebSocketInstance = function(apiUrl){
    var websocket = new $window.WebSocket(apiUrl);
    websocket.id = uniqid();
    return websocket;
}
// TODO: this is a bit hacky since we directly bind it to the raw window event
$window.onbeforeunload = function(e) {
    service.close();
};
var service = {};
service.setMessageEventHandler = function(name,cb) {
    instances[name].onmessage = function(msg) {
        if(msg.data.indexOf('Status: connected') === 0)
        {
            return;
        }
        var jsonObj = JSON.parse(msg.data);
        cb(jsonObj);
    };
};
service.isOpen = function() {
    return webSocket.readyState === 1;
};
service.send = function(msg) {
    txQueue.push(msg);
    deferredSend();
};
service.close = function() {
    return webSocket.close();
};
service.reopen = function() {
    // get old message handler
    var msgHandler = webSocket.onmessage;
    // try closing the previous WebSocket
    service.close();
    // open new WebSocket
    openConnection();
    // re-attach old handler to new WebSocket
    webSocket.onmessage = msgHandler;
};
service.getId = function() {
    return webSocket.id;
}
// Returns an already existing instance of the socket, if unavailable then creates a new one.      
service.getInstance = function(name, config) {
    if(!(name in instances)) {
        instances[name] = createNewWebSocketInstance(config);
    } 
    registerWebSocketHandlers(instances[name]);
    return instances[name];
};
return service;

您可以在websocket.org上使用websocket.html测试WebSocket

使用文本编辑器,复制以下代码并将其保存为websocket.html在你硬盘上的某个地方。然后只需在浏览器中打开它。页面会自动连接,发送消息,显示响应,并关闭连接。

参见Linux - WebSocket测试错误

相关内容

  • 没有找到相关文章

最新更新