Created
September 20, 2012 18:16
-
-
Save incompl/3757496 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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