Skip to content

Instantly share code, notes, and snippets.

@enriquez
Created April 4, 2011 21:47
Show Gist options
  • Save enriquez/902518 to your computer and use it in GitHub Desktop.
Save enriquez/902518 to your computer and use it in GitHub Desktop.
Socket.IO wrapper using Microevent for binding/triggering custom events.
class ClientSocket
constructor: () ->
@socket = new io.Socket()
@socket.connect()
@socket.on 'connect', =>
this.trigger('connect.server', null)
@socket.on 'message', (response) =>
this.trigger(response.trigger, response.payload)
@socket.on 'disconnect', =>
this.trigger('disconnect.server', null)
sendServerEvent: (event, payload) ->
request = {
trigger: event
payload: payload
}
@socket.send request
MicroEvent.mixin ClientSocket
window.ClientSocket = ClientSocket
# Example usage
class MyClient extends ClientSocket
submit: (message) =>
this.sendServerEvent('message.client', message)
window.MyClient = MyClient
class ServerSocket
constructor: () ->
@socket = io.listen(app)
@socket.on 'connection', (client) =>
this.trigger('connect.client', client)
client.on 'message', (request) =>
this.trigger(request.trigger, request.payload)
client.on 'disconnect', =>
this.trigger('disconnect.client', client)
MicroEvent.mixin ServerSocket
# Example usage
serverSocket = new ServerSocket()
serverSocket.bind 'message.client', (message) ->
response = {
trigger: 'message.server'
payload: message
}
serverSocket.socket.broadcast(response)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment