0
私は「ユーザー名」と呼ばれるイベントをトリガーしようとしています。 Node.jsでSocket.IOライブラリを使用しています。ソケットで発光させると、なぜイベントトリガーが発生しないのですか?
index.htmlをクライアント側の私が発光するようにしようとしているイベントです:
//show online users
socket.on('usernames', function (data) {
console.log('@@@@@@@@@@@@@@@@@@@@@');
var html = '';
for (var i = 0; i < data.length() ; i++) {
html += data[i] + '<br/>';
}
$users.html(html);
});
EMITがオンになっているので、私は2つのindex.htmlファイル、およびserver.jsを持っていますserver.jsにおけるサーバ側:
io.sockets.on('connection', function (socket) {
//new user join
socket.on('new user', function (data, callback) {
if (nicknames.indexOf(data) != -1) { //if name dont exist .indexOf() returns -1
callback(false);
} else {
callback(true);
socket.nickname = data;
nicknames.push(socket.nickname);
io.sockets.emit('usernames', nicknames);
}
});
// sent message from user
socket.on('send message', function (data) {
//send the data to all users
io.sockets.emit('new message', data);
});
//
});
** index.htmlの中のイベントは$(ドキュメント).ready()内にあります。
何も起こらず、イベントが発生しません。
ヘルプ?
イベント名にはスペースを使用しないでください。イベント「新規ユーザー」はこれまでに呼び出されましたか?そうでない場合は、 "usernames"を放出しません – Molda
実際には、それはベストプラクティスではないかもしれないが、おそらくスペースでうまく動作します。 –
「usernames」という名前の発光が発生したときにトリガーするイベントがあります。私はあなたのサーバー側のコードでは、 '新しいユーザー'と呼ばれるイベントの中で 'usernames'というイベントを放出していることがわかります。新しいユーザーは別の場所で呼び出されていますか?もしそうでなければ、それは始めるのに良い場所になるでしょう。また、あなたのサーバーではニックネーム配列に各ユーザー名をプッシュしていますが、ニックネーム配列はこのコードスニペットには表示されません。ただし、この例の一部としては含まれていない場合を除きます。 – Jackthomson