Neighbor's Preppy Maltese

    think-websocket-socket.io
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.12 • Public • Published

    think-websocket-socket.io

    Build Status Coverage Status npm

    Socket.io adapter for websocket

    Install

    npm install think-websocket-socket.io
    

    How to Config

    Edit config file src/config/adapter.js, add options:

    const socketio = require('think-websocket-socket.io');
    exports.websocket = {
      type: 'socketio',
      common: {
        // common config
      },
      socketio: {
        handle: socketio,
        allowOrigin: null, // any origin is allowed by default
        path: '/socket.io', // `/socket.io` by default.
        adapter: null,
        messages: [{
          open: '/websocket/open', // websocket action when connected
          close: '/websocket/close', // websocket action when close
          addUser: '/websocket/addUser', //websocket addUser action when event is addUser
        }]
      }
    }

    Edit config file src/config/config.js, add options:

    module.exports = {
      // ...
      stickyCluster: true
      // ...
    }

    Config Options

    path: The socket.io process path is /socket.io by default. You can edit the folloing configuration if you need.

    adapter: When using multiple nodes to deploy WebSocket, multiple nodes can communicate with Redis. You can get things done by set up adapter. For example:

    const socketio = require('think-websocket-socket.io');
    const redis = require('socket.io-redis');
    const adapter1 = redis({ host: 'localhost', port: 6379 });
    exports.websocket = {
      type: 'socketio',
      socketio: {
        // ...
        adapter: adapter1,
        // ...
      }
    }

    allowOrigin: Sets the allowed origins value. Defaults to any origins being allowed. allowOrigin can be string, array or function. More detail see at https://socket.io/docs/server-api/#server-origins-value[https://socket.io/docs/server-api/#server-origins-value].

    Work with Action

    // server
    module.exports = class extends think.Controller {
      constructor(...arg) {
        super(...arg);
      }
      openAction() {
        console.log('ws open');
        return this.success();
      }
      closeAction() {
        console.log('ws close');
        return this.success();
      }
      addUserAction() {
        console.log('addUserAction ...');
        console.log(this.wsData); // this.req.websocketData, 'thinkjs'
        console.log(this.websocket); // this.req.websocket, websocket instance
        console.log(this.isWebsocket); // this.isMethod('WEBSOCKET'), true
        return this.success();
      }
    }
    
    // in `view/websocket_index.html`
    // <script src="http://lib.baomitu.com/socket.io/2.0.1/socket.io.js"></script>
    var socket = io();
    socket.on('opend', function(data) {
      console.log(data);
    });
    socket.emit('addUser', 'thinkjs');

    emit

    You can emit event to the current socket in Action through this.emit:

      // server
      module.exports = class extends think.Controller {
        constructor(...arg) {
          super(...arg);
        }
        openAction() {
          this.emit('opend', 'This client opened successfully!');
          return this.success();
        }
      }
    
      // client
      //<script src="http://lib.baomitu.com/socket.io/2.0.1/socket.io.js"></script>
      var socket = io();
      socket.on('opend', function(data) {
        console.log(data);
      });

    broadcast

    You can broadcast event to all sockets in Action through method this.broadcast:

      // server
      module.exports = class extends think.Controller {
        constructor(...arg) {
          super(...arg);
        }
        openAction() {
          this.broadcast('joined', 'There is a new client joined successfully!');
          return this.success();
        }
      }
    
      // client
      //<script src="http://lib.baomitu.com/socket.io/2.0.1/socket.io.js"></script>
      var socket = io();
      socket.on('joined', function(data) {
        console.log(data);
      });

    Keywords

    none

    Install

    npm i think-websocket-socket.io

    DownloadsWeekly Downloads

    47

    Version

    1.0.12

    License

    none

    Unpacked Size

    11.6 kB

    Total Files

    8

    Last publish

    Collaborators

    • lizheming
    • welefen
    • sijiecai
    • lushijie
    • berwin
    • bezos
    • toxicjohann
    • huangxiaolu