gpt4 book ai didi

javascript - SignalR:如果没有客户端方法,则不会调用 Hub OnConnected

转载 作者:可可西里 更新时间:2023-11-01 01:18:30 26 4
gpt4 key购买 nike

我正在用 SignalR 编写游戏。这个想法是你连接你的笔记本电脑,它将被用作“显示器”,然后你连接你的智能手机,它将被用作“操纵杆”。整个设置运行良好。

既然一切正常,我决定重构代码。我意识到操纵杆和显示器之间的关系是一种方式(显示器永远不需要将信息发送回操纵杆)。因此,我决定我不需要在操纵杆上使用任何 signalR 可调用客户端函数(例如,操纵杆 js 中的 gameHub.client.joyStickMethod() 没有用处。

就在那时我发现了一些奇怪的事情

事实证明,除非我定义一个 myHub,否则不会调用我重写以处理不同类型的客户端(显示器和操纵杆)的集线器方法 public override Task OnConnected()。客户端.clientSideMethod()。这是我正在处理的示例:

        var gameHub = $.connection.gameHub;
gameHub.client.connection();
$("#joystick").joystick({
hub: gameHub
});

gameHub.client.activateJoystick = function () { };
$.connection.hub.qs = "type=joystick&gameId=" + "@Model.Id";
$.connection.hub.start(); //this will invoke on connected

您看到那个空的客户端方法了吗?这就是在服务器端调用 OnConnected 的原因。如果我删除那行代码,它将不会被调用。

        var gameHub = $.connection.gameHub;
gameHub.client.connection();
$("#joystick").joystick({
hub: gameHub
});

//gameHub.client.activateJoystick = function () { };
$.connection.hub.qs = "type=joystick&gameId=" + "@Model.Id";
$.connection.hub.start(); //this will invoke on connected

这是行不通的,因为集线器上没有客户端方法。我或许可以在集线器上添加一个 RegistrateJoystick 方法并调用它,但我认为这种行为是意外的。因此我的问题是:

有没有办法手动“连接”到集线器,以便调用 OnConnect 方法?

最佳答案

这是设计使然。如果您没有对集线器的任何订阅,那么该特定客户端将无法从服务器到客户端获取任何消息。您仍然可以在集线器上调用方法。

关于javascript - SignalR:如果没有客户端方法,则不会调用 Hub OnConnected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14273949/

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