[英]How to send multiple client using socket.id that are connected to socket (Nodejs, Socket.io)
[英]How to send response back to client using socket.io?
我有從客戶端到服務器的socket.emit
調用作為響應,我想將文件名傳遞給客戶端,這在下面的代碼中沒有發生,不確定是什么實現的錯誤,我沒有看到任何錯誤。 如何使用socket.emit
從服務器獲得響應?
客戶端.js
socket.emit('startRecording',function (response) {
console.log('start recording emit response',response);
});
服務器..js
socket.on('startRecording',function () {
var response;
logsRecording(function (filename) {
response = filename;
return response;
//socket.emit('filename',filename);
});
要確認消息,您的startRecording
事件處理程序需要接受一個確認回調作為參數。 然后,您可以使用所需的數據調用它。 請參閱發送和獲取數據(確認)
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應用程序可能會有所幫助,以更全面地了解Websockets。
您的服務器代碼應如下所示:
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) {
這是一個 2020 年的“調用”示例調用,可以與帶有四個參數的分子微服務一起使用:
服務器在回調函數中使用兩個參數 err 和 res 響應角度承諾。
角 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;
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.