iocat
Version:
WebSocket netcat with Socket.io support
115 lines (94 loc) • 2.79 kB
text/coffeescript
{Base} = require './Base'
io = require 'socket.io'
class SIOServer extends Base
constructor: ( = {}) ->
.port ?= .localPort
.log = !!.verbose
'constructor'
= []
return @
start: (fn = null) =>
'start'
= io.listen .port,
#.set 'log', false
#.enable 'browser client mignification'
#.enable 'browser client etag'
#.enable 'browser client gzip'
.on 'listening',
#.server.on 'request',
.on 'connection',
#.server.on 'close',
#.server.on 'checkContinue',
#.server.on 'connect',
#.server.on 'upgrade',
#.server.on 'clientError',
.on 'error',
.sockets.on 'disconnect',
.sockets.on 'connection',
.sockets.on 'error',
do fn if fn
_enqueue: (data) =>
.push data
# Methods
send: (data, fn = null) =>
unless do
data
else
'send', data
.emit .emitKey, data
do fn if fn
end: (fn = null) =>
'end'
do .disconnect if do
= null
= false
do fn if fn
isActive: =>
? and
# SIOServer Events
onSIOServerListening: =>
'onSIOServerListening'
'listening'
onSIOServerDisconnect: =>
'onSIOServerDisconnect'
'disconnect'
onSIOServerSocketConnection: (socket) => # socket connection without socket.io handshake
"onSIOServerSocketConnection"
onSIOServerConnection: (socket) =>
'onSIOServerConnection'
'connection', socket
= socket
.on 'open',
.on 'close',
.on 'error',
.on .emitKey,
.on 'connect',
.on 'disconnect',
= true
for data in
data
'ready'
onSIOServerError: (err) =>
'onSIOServerError', err
'error', err
# Client Events
onClientConnect: =>
'onClientConnect'
'connect'
onClientDisonnect: =>
'onClientDisonnect'
'disconnect'
onClientOpen: =>
'onClientOpen'
'open'
onClientClose: =>
'onClientClose'
'close'
onClientError: (err) =>
'onClientError', err
'error', err
onClientMessage: (msg) =>
'onClientMessage', msg
.emitKey, msg
module.exports =
SIOServer: SIOServer