Socket.io を使用して接続されたクライアントにメッセージをブロードキャストする Node スクリプトがあります。Upstart スクリプトを使用してバックグラウンド プロセスとして実行したいと考えています。でデーモンを起動するsudo start my_server
と、プロセスが起動して実行されます。しかし、Socket.ioの標準出力「info - (Socket.io started)」でサーバーが即停止。
これは、Socket.io 構成が読み取られる前に実行されます。Socket.io のドキュメントには、「log」オプションをリッスン メソッドに渡して、sys.log が出力を stdout に送信しないようにすることができることが示されています。しかし、その最初の「info - (Socket.io started)」が出力されないようにすることはできないようです。モジュールでロガーへの呼び出しをコメントアウトしようとしましたが、キャッシュされています。
node/socket.io デーモンを正常に作成したり、socket.io のデフォルト出力を抑制したりした人はいますか? 以下は、Upstart スクリプトと node.js のコードです。
新興スクリプト
description "node.js server"
author "some@email.com"
start on started mountall
stop on shutdown
respawn
respawn limit 99 5
script
export HOME="/username"
exec sudo -u username sh -c "/usr/local/bin/node path/to/server.js >> /var/log/node.log 2?&1"
end script
server.js を使用して socket.io
var http = require('http'),
url = require('url'),
fs = require('fs'),
//create server and attach socket io
server = http.createServer(function(req, res){
res.writeHead(200,{ 'Content-Type': 'text/html' });
res.end('<h1>Hello Socket Lover!</h1>');
}),
io = require('socket.io').listen(server, function(message){});
//configure socket.io logging so it is minimal
io.configure(function(){
io.set('log level', 1);
io.set('transports', [
'websocket',
'flashsocket',
'htmlfile',
'xhr-polling',
'jsonp-polling'
]);
});
//instruct our server to listen to port 8080
server.listen(8080);
io.sockets.on('connection', function (socket) {
socket.emit('message', { eventType: "connected" });
});
回答または解決策をいただければ幸いです。