message-engin
message engin!
installation
$ npm install message-engin --save
Design
client1 server1 client2 -> messageQueue -> server2 ->LVS ---> websocket client client3 server3
We can define our own message protocol.
Basic useage:
server
'use strict';var co = http = ; var server = server; { return objdn+":"+objappid;} /**give the key to the connection*/{ //request.cookies // you can get cookie var httpRequest = requesthttpRequest; console; return ;} /*calc the connetion key from the message*/{ console; return ;}{ var httpServer = http; httpServer; return httpServer;};
client
'use strict';var co = ;var Client = Client;;
ws client
'use strict';var WebSocketClient = client;var client = ;client;client;client;
API
Server
var server = require('message-engin').server;
Methods
function* start(mqConf , wsConf)
we must yield server.start(mqConf , wsConf)
to start server.mqConf
ref:node-amqp.
####wsConf propperties
wsConf
ref:WebSocket-Node. wsConf
has two extra items:
- function* keyFn(request) -
function
,keyFn
give the connection key to identify a connection.request.httpRequest
is the http request at websocket handshake.so we can userequest.httpRequest.headers
to get http headers. - messageKeyFn(message,headers) - give the connection key from message to determine which connection we will send the message. the
headers
is come fromclient.send(message,headers)
.
Client
Constructor
Client(mqConf)
var Client = require('message-engin').Client
Create a message engin client. mqConf
ref:node-amqp
Methods
function* init()
We must yield client.init()
to init client;
Messages
message
we get a new message , client.on('message' , function(message,headers){})
. the header
is come from a websocket http request at handsake.
status
connnection status change,such as a new connection established or a connection disconneted.
client.on('message' , function(message,headers){})
.the header
is come from a websocket http request at handsake.When server accept a new connection ,we will receive {status:1,key:"connection key"}
.when connection disconnect ,we will receive {status:0 , key:"connection key"}