SignalR如何将javascript对象从一个客户端发送到另一个客户端

Posted

技术标签:

【中文标题】SignalR如何将javascript对象从一个客户端发送到另一个客户端【英文标题】:how to send a javascript Object from one Client to Another by SignalR 【发布时间】: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。

【问题讨论】:

这可能对Call specific client from 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);
    

现在问题解决了。

【讨论】:

很高兴您解决了这个问题。您应该将此标记为已回答!祝你好运!

以上是关于SignalR如何将javascript对象从一个客户端发送到另一个客户端的主要内容,如果未能解决你的问题,请参考以下文章

如何从SignalR客户端端确定服务器断开连接

SignalR:无法获取属性“开始”的值:对象为空或未定义

SignalR 2.2 客户端未收到任何消息

[.NET][SignalR] 由 Server 调用 JavaScript–使用 SignalR 实践 Push 消息模式

ASP.NET Core SignalR 下:SignalR Javascript 客户端

SignalR JavaScript客户端API调用连接