簡體   English   中英

Socket.io發送到特定客戶端

[英]Socket.io sending to specific client

有人可以告訴我為什么我得到不確定的答復嗎?

正如我已經檢查過的,它肯定是保存了socket.io套接字ID。 響應的類型為“未定義”。 它成功連接,正如我在服務器代碼(main.js)上看到的那樣,並且可以看到uuid和套接字ID。

main.js

'use strict';
var uuid = require('node-uuid');
var fs = require('fs');
var fse = require('fs-extra');
var rimraf = require('rimraf');
var socketio = require('socket.io')();

var cnf = require('./config.js');

var myId = uuid.v4();
var connectedWorkers = {};

if (!fs.existsSync('runtime')) {
    console.log("runtime directory cannot be found");
}

rimraf.sync('runtime/generated');
fs.mkdirSync("runtime/generated", function(err){
    if(err){ 
        console.log(err);
        response.send("ERROR! Can't make the directory! \n");    // echo the result back
    }
});

socketio.on('connection', function(socket){
    console.log('connection!');
    var newId = uuid.v4();
    connectedWorkers[newId] = socket.id;
    socketio.sockets.in(connectedWorkers[newId]).emit("test", {asd:"asdasd"});
    console.dir(connectedWorkers);
});
socketio.listen(3000);

client.js

'use strict';

var cnf = require('./config.js');

var socket = require('socket.io-client')(cnf.serverURL);

socket.on('connect', function(data){
    console.log(data);
    socket.on('event', function(data){
    });
    socket.on('disconnect', function(){});
});

這僅僅是因為您輸入錯誤。

socket.on('connect', function(data){    // this 'connect' event have no parameter. Just function()
    console.log(data);                  // therefore 'data' here will be 'undefined'
});

socket.on('test', function(data){
    console.log(data);                  // this will return {asd:"asdasd"} as you emitted this.
});

您可以撥打emit直接在插座:

socketio.on('connection', function(socket){
    socket.emit("test", {asd:"asdasd"});
});

您可以嘗試在客戶端監聽test事件:

'use strict';

var cnf = require('./config.js');

var socket = require('socket.io-client')(cnf.serverURL);

socket.on('test', function(data){
    console.log(data.asd);  //should print "asdasd"
});

暫無
暫無

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

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