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);
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值