美文网首页
Socket.IO使用技巧(一)

Socket.IO使用技巧(一)

作者: ishowshao | 来源:发表于2017-02-07 18:56 被阅读614次

    socket.io 是一款优秀的WebSocket框架,简单好用。只是文档很少,有很多技巧性用法需要自己摸索,这里我会陆续分享一些自己发现的使用技巧,欢迎大家讨论。

    官方给的client端示例

    let socket = io('http://localhost');
    socket.on('news', data => {
        console.log(data);
        socket.emit('my other event', {my: 'data'});
    });
    

    server端示例

    io.on('connection', socket => { // 每次断线重连都是新的对象
        socket.emit('news', {hello: 'world'});
    });
    

    socket.io可以自己处理断线重新连接,但是每次断线重连之后socket都是新的对象。
    假设有这样的场景:每次断线重连client都要发送一些基础数据给server,可行的做法是监控client端的connect或者reconnect事件,然后发送数据给server。但是这样做有个两个弊端:第一,代码形式上不是“同步”的;第二,代码结构比较复杂,要写至少两个事件监听。

    可以有个更简单的做法,这里拿token做个举例:

    client端

    let socket = io('http://localhost/?token=900150983cd24fb0d6963f7d28e17f72');
    

    server端

    io.on('connection', socket => {
        let {token} = socket.handshake.query; // 从这里可以取到client连接url的query
        console.log('token');
    });
    

    如此做法,即可在建立连接同时拿到token,不需要另行发送数据进行沟通。

    关注公众号,获得更多技术文章

    JS随笔

    相关文章

      网友评论

          本文标题:Socket.IO使用技巧(一)

          本文链接:https://www.haomeiwen.com/subject/oremittx.html