-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathSessionSocketIODuplexStream.js
39 lines (39 loc) · 1.12 KB
/
SessionSocketIODuplexStream.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
module.exports = {
SIOClientServerStream: function Stream(socket){
return {
send: function(message){
socket.emit('messageToServer', message);
},
listen: function(handler){
socket.on('messageToClient', function (message) {
handler(message);
});
}
}
},
SIOServerClientStream: function ServerClientStream(io){
var StreamHandler=null;
io.on('connection', function (err, socket, session) {
socket.on('messageToServer', function (message) {
message._socket = socket;
message.context = message.context || {};
message.context.session = session;
if(StreamHandler) {
StreamHandler(message);
}
});
});
return {
send: function(message){
var socket = message._socket;
message._socket = undefined;
if(message.context.session) message.context.session = undefined;
if(!socket) throw new Error("Socket is nod defined in the message");
socket.emit('messageToClient', message);
},
listen: function(handler){
StreamHandler = handler;
}
}
}
}