問題 socket.ioが機能しない
詳細
express [folder]; cd [folder]; npm install;
でプロジェクトを生成しましたnpm install socket.io
セットアップ
クライアント
var socket = io.connect('http://example.com:3000');
socket.on('connect', function() {
console.log('connected');
});
socket.on('message', function(msg){
console.log(msg);
});
socket.on('disconnect', function() {
console.log('disconnected');
});
socket.on('error', function (e) {
console.log('System', e ? e : 'A unknown error occurred');
});
サーバー
[...]
app.listen(3000);
// socket.io setup
var socket = require('socket.io').listen(app);
// socket.io connection establishment
socket.on('connection', function (client) {
client.send("hello");
console.log("hello", client);
});
connectionイベントが発生しないのはなぜですか?
しばらく時間がかかりました... connection
イベントはio.sockets
でエミットされます。あなたのコードではこれは
socket.sockets.on('connection', function (client) {
client.send("hello")
console.log("hello", client)
})
この混乱を避けるには、変数名としてio
ではなくsocket
を使用する必要があります。
Ricardo Tomasi 正しいです。私の命を救いました。夢中になりました。
物事は変わりましたが、2013年です これについてはまだ問題が(2年以来)開かれています
おそらく何かが変わった、とにかく 'connect'イベントを登録するために私はこれをしなければならなかった:
var openSocket = function (uniqueID) {
var appSocket = io.connect('/'+uniqueID, { transports: ['websocket', 'xhr-polling']});
appSocket.socket.on('connect', function () {
console.log('i did connect.');
});
return appSocket;
};
次は私のためにトリックを行いました:socket.io-client: "^ 0.9.16"
io.connect("http://localhost:4000", {'force new connection': true});
これで、「接続」イベントが常に発生し、再利用されません。
このオプションは、socket.io-client/lib/io.jsの行を調べることでわかりました:192このio.jsファイルがgithubで見つからないため、将来のリリースではリファクタリングが行われていると考えられます。作業。
少なくとも、これはこの一時的な作業を回避する誰かにとって役立つかもしれません。