【问题标题】:how to send a javascript Object from one Client to Another by SignalRSignalR如何将javascript对象从一个客户端发送到另一个客户端
【发布时间】:2015-11-06 11:19:06
【问题描述】:

我正在开发一款 Javascript 多人游戏,我需要使用 signalR 将 Javascript 对象从一个客户端发送到另一个客户端。到目前为止,我通过字符串或数组将客户端发送到客户端数据。
但我不知道如何在服务器中接收 Javascript 对象以将该对象发送到另一个客户端。

var MyInfo = {
    UserName: loginUserName,
    userid: logInUserId,
    getinfo: function() {
        return this.UserName + ' ' + this.userid;
    }
}

我应该使用哪种数据类型在我的集线器中接收该 Javascript 数据。
我正在研究 C# .NET MVC。

【问题讨论】:

标签: javascript c# jquery model-view-controller signalr


【解决方案1】:

我认为最简单的方法是在服务器端创建一个MyInfoModel,其中包含与 JS 模型相同的属性,然后将其传递给服务器方法。

通常,SignalR 和 ASP.NET 应该处理数据的序列化,让您可以发送和接收复杂的对象。 (请注意,我没有对其进行测试,这只是一个有根据的猜测)。由于您可以轻松地将复杂对象从服务器发送到客户端,因此我认为您没有理由不能将它们从客户端发送到服务器。

如果第一种方法(在服务器上创建模型并让服务器方法接受模型)不起作用,您可以序列化对象,将其作为字符串发送并在集线器上反序列化(您仍然需要要反序列化的模型)。

如果这些都不起作用,请留言,当我拿到带有 VS 的计算机时,我将对其进行测试并分享结果。

希望这会有所帮助!祝你好运!

【讨论】:

    【解决方案2】:

    我得到了我的问题的答案...
    C# 语言提供 Javascript 对象到 Object 数据类型的自动转换。因此,我将 Javascript 对象发送到服务器,然后以 Object 数据类型接收该对象。之后,我将该对象发送到目标客户端,如下所示:

    var MyInfo = {
        UserName: loginUserName,
        userid: logInUserId,
        getinfo: function() {
            return this.UserName + ' ' + this.userid;
        }
    };
    
    var MyInfo2 = {
        UserName: "",
        userid: "",
        getinfo: function() {
            return this.UserName + ' ' + this.userid;
        }
    };
    
    var chessR = $.connection.gameHub;
    var myConnectionID;
    chessR.client.testObject = function(temp) {
        MyInfo2.UserName = temp.UserName;
        MyInfo2.userid = temp.userid;
        alert(MyInfo2.getinfo());
    }
    $.connection.hub.start().done(function() {
        chessR.server.testObject(MyInfo);
    });
    

    我在 signalR 集线器上写:

    public class GameHub : Hub
    {
        public void testObject(Object MyInfo)
        {
            Clients.Caller.testObject(MyInfo);
        }
    }
    

    现在问题解决了。

    【讨论】:

    • 很高兴您解决了这个问题。您应该将此标记为已回答!祝你好运!
    猜你喜欢
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    相关资源
    最近更新 更多