如何使用socket.io将响应发送回客户端?

时间:2016-07-21 14:27:08

标签: node.js socket.io

我有A.cpp从客户端调用服务器作为响应我想让客户端的文件名没有发生在下面的代码不知道什么是错误的任何想法,我没有看到任何错误。如何使用socket.emit来获取服务器的响应?

client.js

socket.emit

server..js

 socket.emit('startRecording',function (response) {
            console.log('start recording emit response',response);
        });

3 个答案:

答案 0 :(得分:12)

要确认消息,startRecording事件的处理程序需要接受确认回调作为参数。然后,您可以使用所需数据调用它。见Sending and getting data (acknowledgements)

socket.on('startRecording',function (socket, ackFn) {
    var response;
    logsRecording(function (filename) {
        ackFn(filename);
    });
});

或者,您可以在client.js中为已注释掉的filename事件添加一个侦听器:

socket.emit('startRecording');
socket.on('filename', function(filename) {
    console.log('Filename received: ' + filename);
});

从标题" Integrating Socket.IO"开始,通过Get Started: Chat application运行可能会有所帮助。以便更全面地了解Websockets。

答案 1 :(得分:1)

您的服务器代码应如下所示:

socket.on('startRecording',function (callbackFn) {
    var response;
    logsRecording(function (filename) {
        callbackFn(filename);
    });

如果您想从客户端传递数据:

socket.emit('startRecording', {someData: 'value'}, function (response) {

然后服务器将是:

socket.on('startRecording',function (dataFromClient, callbackFn) {

答案 2 :(得分:0)

谢谢您的有用提示

这里有一个可能与分子自变量微服务一起使用的2020年“调用”示例调用,具有四个参数:

服务器在回调函数中使用两个参数err和res来响应角度承诺。

Angular 9套接字io

protected call(method: string, param?: any) {
    try {
        return new Promise((resolve, reject) => {
            this.socket.emit("call", method, param, (err: any, res: unknown) => {
                console.log(res);
                if (err) { return reject(err); }
                return resolve(res);
            });
        });
    } catch (err) {
        console.error(err);
    }
}

套接字IO服务器响应

  socket.on('call', function(method, param, callbackFn){ // call method, param, 
    console.log(param);
    switch (method) {
        case "test":
            console.log("test detected");
            callbackFn(null , {name:"test",email:"test"});          
            break;
    }
  });