0.0.3 • Published 9 years ago

restful-socket v0.0.3

Weekly downloads
4
License
MIT
Repository
github
Last release
9 years ago

#restful-socket

NPM Version Node.js Version Build Status Test Coverage

Introduction

在某些如服务器需要即时推送消息给客户端的情况下,会使用WebSocket以实现双向通讯。此时,对于其他原本使用HTTP的请求和数据交互,也可以借用WebSocket来处理,以提高性能,减少流量。 restful-socket基于socket.io,对原本基于事件的交互做了一定封装,以模拟请求/响应模式。

Installation

$ npm install restful-socket

API

var RSServer = require('restful-socket');

var server = new RSServer(9000);

server.onConnection = function (socket) {
  console.log('connection.');
};
rsServer.onDisconnect = function (socket) {
  console.log('disconnect.');
};

var persons = [{
  id: 1,
  name: 'One'
}, {
  id: 2,
  name: 'Two'
}];
var next_id = 3;

server.get('/persons', function (socket, req, callback) {
  callback({
    persons: persons
  });
});

server.post('/persons', function (socket, req, callback) {
  if (!req.data || !req.data.person || !req.data.person.name) {
    callback({
      status: {
        code: 400,
        message: 'Bad Request'
      },
      error_message: 'person.name required'
    });
  } else {
    var person = {
      id: next_id++,
      name: req.data.person.name
    };
    persons.push(person);
    callback({
      status: {
        code: 201,
        message: 'Created'
      },
      person: person
    });
  }
});

server.delete('/persons/:id', function (socket, req, callback) {
  var i,
    len;
  for (i = 0, len = persons.length; i < len; i++) {
    if (persons[i].id == req.params.id) {
      persons.splice(i, 1);
      callback();
      return;
    }
  }

  callback({
    status: {
      code: 404,
      message: 'Not Found'
    },
    error_message: 'person id not found'
  });
});

server支持四个方法:get、post、put、delete。

另外,会有客户端代码配合:restful-socket-client

License

MIT