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

hus*_*ain 10 node.js socket.io

我已经socket.emit从客户端调用服务器作为响应我希望有文件名到客户端没有发生以下代码不确定什么是错误的任何想法,我没有看到任何错误.如何获得服务器使用的响应socket.emit

client.js

 socket.emit('startRecording',function (response) {
            console.log('start recording emit response',response);
        });
Run Code Online (Sandbox Code Playgroud)

server..js

 socket.on('startRecording',function () {
        var response;
        logsRecording(function (filename) {
            response = filename;
            return response;
            //socket.emit('filename',filename);
        });
Run Code Online (Sandbox Code Playgroud)

Wil*_*ill 16

要确认该消息,您的startRecording事件处理程序需要接受确认回调作为参数.然后,您可以使用所需数据调用它.请参阅发送和获取数据(确认)

socket.on('startRecording',function (socket, ackFn) {
    var response;
    logsRecording(function (filename) {
        ackFn(filename);
    });
});
Run Code Online (Sandbox Code Playgroud)

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

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

从"集成Socket.IO"标题开始,通过"入门:聊天"应用程序运行可能会有所帮助,以便更全面地了解Websockets.


小智 7

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

socket.on('startRecording',function (callbackFn) {
    var response;
    logsRecording(function (filename) {
        callbackFn(filename);
    });
Run Code Online (Sandbox Code Playgroud)

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

socket.emit('startRecording', {someData: 'value'}, function (response) {
Run Code Online (Sandbox Code Playgroud)

那么服务器将是:

socket.on('startRecording',function (dataFromClient, callbackFn) {
Run Code Online (Sandbox Code Playgroud)