43 lines
1,013 B
CoffeeScript
Executable file
43 lines
1,013 B
CoffeeScript
Executable file
#!/usr/bin/env coffee
|
|
|
|
http = require 'http'
|
|
net = require 'net'
|
|
socketio = require 'socket.io'
|
|
static = require 'node-static'
|
|
|
|
config =
|
|
log_level: 3
|
|
http:
|
|
port: 7777
|
|
mpd:
|
|
host: 'localhost'
|
|
port: 6600
|
|
|
|
fileServer = new (static.Server) './public'
|
|
app = http.createServer((request, response) ->
|
|
request.addListener 'end', ->
|
|
fileServer.serve request, response
|
|
|
|
).listen(config.http.port)
|
|
|
|
io = socketio.listen(app)
|
|
io.set 'log level', config.log_level
|
|
io.sockets.on 'connection', (socket) ->
|
|
client = null
|
|
connectClient = ->
|
|
client = net.connect config.mpd.port, config.mpd.host, ->
|
|
console.log 'client connected'
|
|
client.on 'data', (data) ->
|
|
socket.emit 'FromMpd', data.toString()
|
|
client.on 'end', ->
|
|
console.log 'client disconnected, reconnecting'
|
|
connectClient()
|
|
connectClient()
|
|
|
|
socket.on 'ToMpd', (data) ->
|
|
console.log "[in] " + data
|
|
client.write data
|
|
|
|
socket.on 'disconnect', ->
|
|
client.removeAllListeners 'end'
|
|
client.end()
|