nodejs ベースの IRC Web クライアント ( https://github.com/martynsmith/node-ircおよび socket.io を使用) を作成しようとしていますが、いくつか問題があります。
サーバーを起動して初めて接続すると、すべてが正常に機能し、クライアントは「登録済み」イベントを取得し、その後すべてが機能します。
ページを更新すると、サーバーは引き続き init イベント (サーバーとニックネームを含む) を取得しますが、IRC クライアントは接続しません (4000 ミリ秒後に再接続を試みますが、毎回「接続が 'close' イベントを取得しました」というメッセージが表示されます)。 .
コード:
クライアント側:
var socket;
socket = io.connect('http://localhost:8000');
...
socket.emit('init', { nick: $(".popup #nume").val(), channels: channels });
サーバ側:
io = require('socket.io').listen(8000);
irc = require('irc');
console.log("Started server..");
io.sockets.on('connection', function(socket) {
socket.on('init', function(data) {
console.log('io connection with id ' + socket.id);
console.log('socket length: ' + sockets.length);
var first, i, good, new_message;
sockets.push(socket);
socket.nickname = data.nick;
socket.channels = data.channels;
first = 0;
console.log('Init from : ' + socket.nickname + ' ' + socket.channels);
socket.client = new irc.Client('localhost', socket.nickname, {
port: 6667,
debug: true,
showErrors: true,
autoRejoin: true,
autoConnect: false,
channels: socket.channels,
secure: false,
retryDelay: 4000,
retryCount: 1000
});
socket.client.connect();
socket.client.addListener('registered', function(message) {
socket.client.list();
console.log('Registered to irc');
});
ログ:
io connection with id oFrdaN8WhQAE4mEh62uI
socket length: 1
Init from : test
8 Jun 04:33:50 - SEND: nickserv :ghost test
8 Jun 04:33:50 - SEND: NICK test
8 Jun 04:33:50 - SEND: USER nodebot 8 * :nodeJS IRC client
Netrror: Error: write EPIPE
8 Jun 04:33:50 - Connection got "close" event
8 Jun 04:33:50 - Disconnected: reconnecting
8 Jun 04:33:50 - Waiting 4000ms before retrying
したがって、問題は、サーバーに接続しても、IRC サーバーに接続できないことです (「Connection got 'close' event」メッセージを受け取るたびに)。