mirror of
https://github.com/wbbaddons/Tims-Chat.git
synced 2024-11-01 14:20:07 +00:00
72 lines
1.9 KiB
CoffeeScript
72 lines
1.9 KiB
CoffeeScript
###
|
||
# node.js Pushserver for Tims Chat.
|
||
#
|
||
# @author Tim D<>sterhus
|
||
# @copyright 2010-2013 Tim D<>sterhus
|
||
# @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
|
||
# @package be.bastelstu.chat
|
||
# @subpackage nodePush
|
||
###
|
||
process.title = 'nodePush - Tims Chat'
|
||
|
||
io = require 'socket.io'
|
||
net = require 'net'
|
||
fs = require 'fs'
|
||
|
||
config = require '../config.js'
|
||
|
||
log = (message) ->
|
||
console.log "[be.bastelstu.chat.nodePush] #{message}"
|
||
|
||
class Server
|
||
constructor: () ->
|
||
if process.cwd().substring(process.cwd().length - 3) isnt 'lib'
|
||
console.error 'Please run me via bin/run.sh'
|
||
process.exit 1
|
||
log 'Starting Pushserver for Tims Chat'
|
||
log "PID is #{process.pid}"
|
||
log "Using port: #{config.port}"
|
||
|
||
@initUnixSocket()
|
||
@initSocketIO()
|
||
|
||
process.on 'exit', @shutdown.bind @
|
||
process.on 'uncaughtException', @shutdown.bind @
|
||
process.on 'SIGINT', @shutdown.bind @
|
||
process.on 'SIGTERM', @shutdown.bind @
|
||
|
||
setInterval =>
|
||
@socket.sockets.emit 'newMessage'
|
||
, 60e3
|
||
initSocketIO: () ->
|
||
log 'Initializing socket.io'
|
||
@socket = io.listen config.port
|
||
|
||
@socket.set 'log level', 1
|
||
@socket.set 'browser client etag', true
|
||
@socket.set 'browser client minification', true
|
||
@socket.set 'browser client gzip', true
|
||
|
||
@socket.configure 'development', =>
|
||
@socket.set 'log level', 3
|
||
@socket.set 'browser client etag', false
|
||
@socket.set 'browser client minification', false
|
||
initUnixSocket: () ->
|
||
log 'Initializing Unix-Socket'
|
||
socket = net.createServer (c) =>
|
||
setTimeout =>
|
||
@socket.sockets.emit 'newMessage'
|
||
, 20
|
||
|
||
c.end()
|
||
|
||
socket.listen process.cwd() + '/../data.sock'
|
||
fs.chmod process.cwd() + '/../data.sock', '777'
|
||
shutdown: () ->
|
||
return unless fs.existsSync process.cwd() + '/../data.sock'
|
||
|
||
log 'Shutting down'
|
||
fs.unlinkSync process.cwd() + '/../data.sock'
|
||
process.exit()
|
||
|
||
new Server() |