Socket.io: Socket.io melemparkan err:fn.bind bukan fungsi

Dibuat pada 4 Feb 2016  ·  18Komentar  ·  Sumber: socketio/socket.io

mengapa itu terjadi dan bagaimana cara memperbaikinya? tolong bantu~

salah dari mana:
...\socket.io-adapter\index.js:195
if (fn) process.nextTick(fn.bind(null, null, sids));

versi socket.io:
1.4.5

Komentar yang paling membantu

Saya memeriksa contoh di buku NodeJs in action, dan tentu saja itu tidak akan berfungsi jika Anda menggunakan socket.io versi terbaru, Anda akan memiliki 2 baris berikut untuk membuatnya berfungsi:

Dari:
var usersInRoom = io.sockets.clients(room);

Ke:
var usersInRoom = io.of('/').in(room).clients;

dan dari:
socket.emit('rooms', io.sockets.manager.rooms);

ke:
socket.emit('rooms', io.of('/').adapter.rooms);

Salam pembuka!

Semua 18 komentar

Saya mendapatkan kesalahan yang sama ketika mencoba membangun aplikasi obrolan multi-ruangan dari buku "Node.js beraksi"

<MY_PATH>\chatrooms\node_modules\socket.io-adapter\index.js:195
  if (fn) process.nextTick(fn.bind(null, null, sids));
                              ^

TypeError: fn.bind is not a function
    at Adapter.clients (<MY_PATH>\chatrooms\node_modules\socket.io-adapter\index.js:195:31)
    at Namespace.clients (<MY_PATH>\chatrooms\node_modules\socket.io\lib\namespace.js:253:16)
    at joinRoom (<MY_PATH>\chatrooms\lib\chat_server.js:71:32)
    at Namespace.<anonymous> (<MY_PATH>\chatrooms\lib\chat_server.js:20:5)
    at emitOne (events.js:90:13)
    at Namespace.emit (events.js:182:7)
    at Namespace.emit (<MY_PATH>\chatrooms\node_modules\socket.io\lib\namespace.js:206:10)
    at <MY_PATH>\chatrooms\node_modules\socket.io\lib\namespace.js:174:14
    at _combinedTickCallback (node.js:370:9)
    at process._tickCallback (node.js:401:11)

Masalah muncul jika Anda memperbarui dependensi ke versi terbaru:

  "dependencies": {
    "mime": "^1.3.4",
    "socket.io": "^1.4.5"
  }

saat berfungsi jika Anda menggunakan dependensi yang ditentukan oleh buku

  "dependencies": {
    "socket.io": "~0.9.6",
    "mime": "~1.2.7"
  }

BTW, sebelum berkomentar di sini, saya sudah membaca halaman Migrasi dari 0.9 dari situs socket.io tetapi saya belum menemukan solusi.

Saya dapat mengunggah proyek obrolan sederhana di suatu tempat jika diperlukan (sangat kecil).

Saya memeriksa contoh di buku NodeJs in action, dan tentu saja itu tidak akan berfungsi jika Anda menggunakan socket.io versi terbaru, Anda akan memiliki 2 baris berikut untuk membuatnya berfungsi:

Dari:
var usersInRoom = io.sockets.clients(room);

Ke:
var usersInRoom = io.of('/').in(room).clients;

dan dari:
socket.emit('rooms', io.sockets.manager.rooms);

ke:
socket.emit('rooms', io.of('/').adapter.rooms);

Salam pembuka!

terima kasih @CheckMater

terima kasih @CheckMater

terima kasih @CheckMater

terima kasih @CheckMater

terima kasih @CheckMater

Terima kasih pak @CheckMater

terima kasih @CheckMater

terima kasih @CheckMater

terima kasih @CheckMater

terima kasih @CheckMater

Terima kasih @CheckMater . Tetapi bagi saya hanya mengubah var usersInRoom = io.of('/').in(room).clients; tidak berhasil. Karena klien ini adalah fungsi yang mengambil panggilan balik sebagai param, cuplikan di bawah ini berfungsi untuk saya.

io.of('/').in(room).clients(function(error,clients){
        var otherUsers = [];
                for(var i in clients){
                        if(socket.id != clients[i]) otherUsers.push(nickNames[clients[i]]);
                }
                var userSummary = 'Users Currently in ' + room + ' are : ' + otherUsers.join(', ') + '.';
                socket.emit('message',{text:userSummary});
    });

console.log(io.of('/').in(room).clients);

ReferenceError: kamar tidak ditentukan : di findClientsSocket

terima kasih @CheckMater

terima kasih @CheckMater

thx @CheckMater

terima kasih @CheckMater

Apakah halaman ini membantu?
0 / 5 - 0 peringkat