簡體   English   中英

函數不適用於Socket.io

[英]A function does not work with Socket.io

我正在嘗試從服務器發送一個數組,當服務器使用socket io連接服務器時,該服務器包含用戶的所有ID。 顯然,發射部分似乎工作正常,但接收部分根本沒有響應。

io.sockets.on('connection',
// here's the on connection event
function (socket) {
  i++;
  ids[i]=socket.id;
  console.log("We have a new client: " + ids[i]);
  socket.broadcast.emit('setid', ids);
}
/////that is the emitting part

現在這是接收部分:

 socket.on('setid',
   function(ids) {
  console.log(ids);
 }
);

你需要改變socket.broadcast.emit('setid', ids); to socket.broadcast.emit('setid', {idArr:ids}); console.log(ids.idArr); 在接收功能上。

有人問,

斷絕

io.on('connection',
// here's the on connection event
function (socket) {
  let i = 0;
  let ids = [];
  i++;
  ids[i]=socket.id;
  console.log("We have a new client: " + ids[i]);
  socket.broadcast.emit('setid', {
    idArr:ids
  });
}

客戶

socket.on('setid', function(ids) {
  console.log(ids.idArr);
 }
);

作為旁注,因為這里還不完全清楚,使用socket.broadcast.emit將向除了發送發送的套接字之外的所有客戶端發出 ,直到你打開另一個不會發出的客戶端實例。

看下面的例子,它非常簡單,只是socket.io服務器和socket.io-client客戶端(你可能必須首先運行npm install socket.io-client ):

哈利勒-server.js

const io = require('socket.io')(3001);
var ids = [];
io.on('connection', function (socket) {
    'use strict';
    ids.push(socket.id);
    console.log("We have a new client: " + socket.id);
    socket.broadcast.emit('setid', ids);
});
console.log('Server started at port 3001');

哈利勒-client.js

const socket = require('socket.io-client')('http://localhost:3001');
socket.on('setid', function (ids) {
    console.log(ids);
});

使用node khalil-server啟動服務器,並使用node khalil-client啟動盡可能多的客戶node khalil-client (您必須運行至少兩個客戶端實例,因為我們使用socket.broadcast.emit )。 它只是有效。 請向我們展示更多代碼,我們將嘗試查找錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM