Skip to content

Instantly share code, notes, and snippets.

@nakosung
Created August 5, 2013 06:03
Show Gist options
  • Save nakosung/6153799 to your computer and use it in GitHub Desktop.
Save nakosung/6153799 to your computer and use it in GitHub Desktop.
Switching between dnodes
colors = require 'colors'
es = require 'event-stream'
dnode = require 'dnode'
ss = require 'switch-stream'
server = ->
s = ss()
lobby = ->
d = dnode
join : (next) ->
setTimeout (->
console.log 'join'.red
next()
s.set room()
), 1000
d.on 'remote', (remote) ->
remote.status 'you are in the lobby'.bold.red
room = ->
d = dnode
leave : (next) ->
setTimeout (->
console.log 'leave'.yellow
next()
s.set lobby()
), 1000
d.on 'remote', (remote) ->
remote.status 'you are in the room'.bold.yellow
s.set lobby()
s
client = ->
s = ss()
lobby = ->
d = dnode
status : (text) ->
console.log 'lobby:'.bold.red, text
d.on 'remote', (remote) ->
remote.join ->
s.set room()
room = ->
d = dnode
status : (text) ->
console.log 'room:'.bold.yellow, text
d.on 'remote', (remote) ->
remote.leave ->
s.set lobby()
s.set lobby()
s
d1 = server()
d2 = client()
es.pipeline d1, d2, d1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment