JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 5
  • Score
    100M100P100Q51863F
  • License MIT

easy websocket

Package Exports

  • easy-websocket

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (easy-websocket) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

easy-websocket for node

install

npm install easy-websocket

use

var websocket = require('easy-websocket');

example

server

http

var http      = require('http');
var fs        = require('fs');
var websocket = require('../index');
var app = http.createServer(function (req,res) {
  fs.readFile('./index.html',function (err,data) {
    res.end(data)
  })
});
var ws = WebSocket(app)
          .on('data',function (obj) {
            console.log(obj.type,obj.buffer.length);
          })
          .on('pong',function (text) {
            console.log('pong ...',text);
          });
/*
var ws = WebSocket(server);
ws.on('data',(obj) => {
  console.log(obj.type,obj.buffer.length);
  ws.send('hello world');
});
*/

http [path]/example/http-example.js

var http      = require('http');
var fs        = require('fs');
var websocket = require('../index');
var app = http.createServer(function (req,res) {
  fs.readFile('./index.html',function (err,data) {
    res.end(data)
  })
});

// websocket
app.on('upgrade',function (req,socket,head) {
  var ws = websocket(socket)
    .shakeHand(req)
    .receiveFrame()
    .on('data',function(obj){
      switch(obj.type) {
        case 'string':
          ws.send(obj.buffer.toString());
        break;
        case 'binary':
          ws.send(obj.buffer,'binary');
        break;
      }
    })
    .on('close',function(text){
      console.log('close socket...',text);
    })
    .on('error',function(text){
      console.log('error',text);
    })
    .on('pong',function(text){
      console.log('pong ...',text);
    })
    .on('ping',function(text){
      console.log('ping ...',text);
    });
})

app.listen(3000);

connect [path]/example/connect-example.js

var app       = require('connect')();
var http      = require('http');
var fs        = require('fs');
var websocket = require('../index');

// app.use(...)

app.use(function (req,res,next) {
  fs.readFile('./index.html',function (err,data) {
    res.end(data);
  })
});

var server = http.Server(app);


var ws = websocket(server);
ws.on('data',(obj) => {
  console.log(obj.type,obj.buffer.length);
  ws.send('hello world');
});

/*
server.on('upgrade',function (req,socket,head) {
  var ws = websocket(socket)
    .shakeHand(req)
    .receiveFrame()
    .on('data',function(obj){
      console.log(obj.type,obj.buffer.length);
      switch(obj.type) {
        case 'string':
          ws.send(obj.buffer.toString());
        break;
        case 'binary':
          ws.send(obj.buffer,'binary');
        break;
      }
      //
    });
})
*/

server.listen(3000);
 var websocket = require('easy-websocket');
 var ws = websocket(socket);
 ws.shakeHand(req);
 ws.receiveFrame();
 ws.on('data',function(obj){
     //...
 });

api

1, websocket

1.1 new websocket(server[,config]);

server: instance of http.Server;

var websocket = require('easy-websocket');
var server = http.Server();
//var server = http.createServer();
var ws = new websocket(server);
ws.on('data',() => {
})
//...

config: optional , json object; defalut config:

{
 pingInterval:10000,
 enablePing:true,
 enablePong:true
}

1.2 new websocket(socket[,config]);

  • socket.
  • config: refer to 1.1.
var websocket = require('easy-websocket');
server.on('upgrade',function (req,socket,head) {
  var ws = websocket(socket)
    .shakeHand(req)
    .receiveFrame()
    .on('data',function(obj){
      console.log(obj.type,obj.buffer.length);
      switch(obj.type) {
        case 'string':
          ws.send(obj.buffer.toString());
        break;
        case 'binary':
          ws.send(obj.buffer,'binary');
        break;
      }
      //
    });
})

2, shakeHand(req);

req: http request from client to server;

3, receiveFrame();

receive Frame from client;

4, startPing();

create a ping frame from server to client. In default , this function will call ping([data]) every 10s to ensure this socket connection is alive;

if config.enablePing is true and you never call clearPing() ,it means you should not call this function;

5, clearPing();

stop ping ;

6, ping([data]);

only create ping frame one time; data: optinal, it can be a string or buffers

6, pong([data]);

respone for ping which come from client;

7, send(data[,opcode]);

data : a string or buffers opcode : optinal, the default value is 'text'. if data are buffers , this value must set 'binary'

8, end();

close socket;

event

  • 'data' : when receive data from client
  • 'error' : when some error occur
  • 'ping' : when server accept ping frame
  • 'pong' : when server accept pong frame
  • 'close' : when close socket