gpt4 book ai didi

c# - 使用 SocketIO4Net 将函数回调从 .NET 应用程序传递到 node.js

转载 作者:太空宇宙 更新时间:2023-11-04 01:05:22 25 4
gpt4 key购买 nike

我想调用运行 Node.js 的服务器上的方法。

为此,我将 SocketIO4Net.Client 添加到我的 C# 项目中,但我不知道您是否通过 Emit 方法传递“函数(回调)”。

我尝试了几种方法,但是我总是收到 JS 异常“TypeError:对象不是函数”。

服务器上的 JS(或此处 https://github.com/hobbyquaker/ccu.io/blob/master/ccu.io.js#L1756 )

socket.on('getObjects', function(callback) {
loggerlogger.verbose("socket.io <-- getObjects");
callback(regaObjects);
});

客户端代码

public Task<string> GetObject()
{
Console.WriteLine("Send GetObject");

var taskCompletionSource = new TaskCompletionSource<string>();

dynamic doStuffJs = new Action(() => Console.WriteLine("Hello 0"));
_client.Emit("getObjects", doStuffJs, null, new Action<Object>(Callback));

return taskCompletionSource.Task;
}

private void Callback(object o)
{
Console.WriteLine("Hello 1");
}

Emit 方法的 Doku

/// <summary>
/// <para>Asynchronously sends payload using eventName</para>
/// <para>payload must a string or Json Serializable</para>
/// <para>Mimicks Socket.IO client 'socket.emit('name',payload);' pattern</para>
/// <para>Do not use the reserved socket.io event names: connect, disconnect, open, close, error, retry, reconnect</para>
/// </summary>
/// <param name="eventName"></param>
/// <param name="payload">must be a string or a Json Serializable object</param>
/// <remarks>ArgumentOutOfRangeException will be thrown on reserved event names</remarks>
public void Emit(string eventName, dynamic payload, string endPoint = "", Action<dynamic> callback = null)

最佳答案

如果您想序列化一些 C# 代码,将其从 .NET 交叉编译为 JavaScript,请将其作为 JSON 数据包内的字符串传递到 JavaScript 服务器,然后将其解压并在服务器上运行( inject code 由客户端生成(不 protected )到服务器处理管道)那么设计就有问题。

第一个障碍是 Node.js 服务器理解 JavaScript,而您要发送的代码片段是用 C# 编写的

我建议您重新设计,检查一些网络资源以了解典型的客户端-服务器场景。

如果您对REST-style API不满意那么你可以考虑使用JSON-RPC .

一些关于哪个“更好”的较旧的 Stack Overflow 讨论可以在 REST vs JSON-RPC? 找到。 。您会发现一些有用的链接和相关问题

关于c# - 使用 SocketIO4Net 将函数回调从 .NET 应用程序传递到 node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23592022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com