Обратный вызов Socket.IO не работает в (Node/C#)C#

Место общения программистов C#
Anonymous
Обратный вызов Socket.IO не работает в (Node/C#)

Сообщение Anonymous »

Меня так беспокоит проблема, для которой я попробовал 100 решений, но ничего не помогло.
В Python я могу:
self.sio.emit('join', 'join', callback=self.join_acknowledgment)

и это работает с чарами. Т.е. Всякий раз, когда он запускает событие соединения, сервер в ответ отправляет некоторые данные этой функции. Точно так же я могу сделать то же самое в дартсе без каких-либо проблем, т.е.
_socket!.emitWithAck(
"join",
"join",
ack: (data) {/*to do with data*/},);

Но в C# sockets.io/WebSockets/SocketsSharp, что угодно, я не могу добиться этого каким-либо возможным способом!. Вы можете помочь?
private void OnOpen(object sender, EventArgs e)
{
Console.WriteLine("WebSocket opened");
string uniqueId = Guid.NewGuid().ToString();
var joinData = new JObject
{
{ "join", "join" },
{ "id", uniqueId },
};

string joinMessage = $"42[\"join\", {joinData.ToString(Formatting.None)}]";
Console.WriteLine($"Sending: {joinMessage}");
// Store the callback for later use
callbacks[uniqueId] = (response) =>
{
Console.WriteLine("Join acknowledged with data:");
Console.WriteLine(response);
};
webSocket.Send(joinMessage);
}

Я пробовал все, включая приведенный выше общий код, я пробовал это в SocketIO/WebSocket/SocketSharp. Я не могу изменить код node.js, поскольку он на 100% отлично работает для Python и flutter(dart)
Код на стороне сервера Node.js:
private onConnect(): void {
global.io.on('connection',async (socket: any) => {
let id: string = socket.request['id']
console.log("connected" + id);
socket.on('join', async (args, callback) => {
console.log('Join event received:', args);
console.log(callback);
//get some data from db

Подробнее здесь: https://stackoverflow.com/questions/787 ... -in-node-c

Вернуться в «C#»