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对象从一个客户端发送到另一个客户端的主要内容,如果未能解决你的问题,请参考以下文章
[.NET][SignalR] 由 Server 调用 JavaScript–使用 SignalR 实践 Push 消息模式