Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Socket.io发送到特定客户端_Javascript_Node.js_Socket.io - Fatal编程技术网

Javascript Socket.io发送到特定客户端

Javascript Socket.io发送到特定客户端,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,有人能告诉我为什么我会得到一个未定义的回复吗 正如我所检查的,它肯定在保存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('rimra

有人能告诉我为什么我会得到一个未定义的回复吗

正如我所检查的,它肯定在保存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(){});
});

您可以直接在套接字上调用
emit

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

您可以直接在套接字上调用
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"
});

您可以尝试在客户端侦听
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"
});

这仅仅是因为您的日志记录错误

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.
});

这仅仅是因为您的日志记录错误

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.
});

但是我不确定我是否完全理解了你的问题。但是我不确定我是否完全理解了你的问题。