websocket记录

建立一个websocket连接,所经历的生命周期
1.onopen(打开事件)
2.onclose(断开事件)
3.onmessage(消息事件)
4.onerror(错误事件)

	var websocket = new WebSocket('wss://'+window.location.hostname+':'+port);
    websocket.onopen = function (evt) {
     
        onOpen(evt)
    };
    websocket.onclose = function (evt) {
     
        onClose(evt)
    };
    websocket.onmessage = function (evt) {
     
        onMessage(evt)
    };
    websocket.onerror = function (evt) {
     
        onError(evt)
    };

onopen(打开事件)
连接成功,数据初始化赋值
onclose(断开事件)
断开连接
onerror(错误事件)
服务未开启/服务器错误
onmessage(消息事件)
处理接收消息和发送消息。websocket消息发送方法:send

//在msg定义消息类型和具体消息,使用send方法发送
var msg = {
     }
msg.cmd = 'message';
msg.data = user.Message.getChat(message);
websocket.send(JSON.stringify(msg));

通常在后台会定义不同的消息回调类型,我们在前端根据具体的返回参数做不同的逻辑处理就行了。完整的代码如下:

function onMessage(evt) {
     
    var obj = JSON.parse(evt.data);
    //上线成功 连接客服
    if (obj.cmd == 'online') {
     
        var msg = {
     };
        msg.data = {
     };
        msg.cmd = 'visitorToKefu';
        msg.data.uid = visitor.visitor_id;
        msg.data.name =  visitor.visitor_name;
        msg.data.avatar = visitor.visitor_avatar;
        msg.data.kefu_code = visitor.kefu_code;
        websocket.send(JSON.stringify(msg));
    } else if (obj.cmd == 'visitorToKefu') {
     
        //连接客服成功
        if(obj.code == 200){
     
            user.Message.connectKefu(obj.data);
            //获取与该客服聊天记录
             user.Message.getChatLog();
        }else if(obj.code == 201){
     
            alert('客服已下线')
        }
    } else if (obj.cmd == "message") {
     
        if (obj.code == 200) {
     
            user.Message.add(obj.data, 'outgoing-message', 0);
        } else if (obj.code == 201) {
     
            user.Message.add(obj.data, 'outgoing-message', 1);
        }
        return true;
    } else if (obj.cmd = "chatMessage") {
     
        if (obj.code == 200) {
     
            user.Message.add(obj.data, '', 0);
        }
    }
}

你可能感兴趣的:(websocket)