Skip to content

Instantly share code, notes, and snippets.

@incompl
Created September 20, 2012 18:16
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save incompl/3757496 to your computer and use it in GitHub Desktop.
Save incompl/3757496 to your computer and use it in GitHub Desktop.
// Shared code
var MsgType = {
"game start": String.fromCharCode(0),
"update state": String.fromCharCode(1),
"private message": String.fromCharCode(2)
};
var MsgTypeLookup = [
"game start",
"update state",
"private message"
];
var createNetEmitter = function( EventEmitter2, socket ) {
var receive = new EventEmitter2({ wildcard: true });
socket.on( 'message', function( encodedString ) {
var event = MsgTypeLookup[ encodedString.charCodeAt(0) ];
netreceive.emit( event, encodedString.substr(1) );
});
var send = new EventEmitter2({ wildcard: true });
netsend.on( '*', function( event, encodedString ) {
socket.emit( 'message', MsgType[this.event] + encodedString );
});
return { receive: receive, send: send };
};
// Server code
var EventEmitter2 = require('eventemitter2').EventEmitter2;
io.sockets.on( 'connection', function( socket ) {
var net = createNetEmitter( EventEmitter2, socket );
net.send.emit( 'game start', 'world state goes here' );
});
// Client code
// Include the EventEmitter2 library
var socket = io.connect();
socket.on( 'connect', function() {
var net = createNetEmitter( EventEmitter2, socket );
net.receive.on( 'game start', function( worldState ) {
var state = decode( worldState );
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment