Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 信号员如何避免连接两次_Jquery_Signalr_Signalr Hub - Fatal编程技术网

Jquery 信号员如何避免连接两次

Jquery 信号员如何避免连接两次,jquery,signalr,signalr-hub,Jquery,Signalr,Signalr Hub,在我的应用程序中,一旦我登录,我将重定向到主页,在那里我有以下脚本: // Defining a connection to the server hub. var myHub = $.connection.myHub; // Setting logging to true so that we can see whats happening in the browser console log. [OPTIONAL] $.connection.h

在我的应用程序中,一旦我登录,我将重定向到主页,在那里我有以下脚本:

// Defining a connection to the server hub.
        var myHub = $.connection.myHub;
        // Setting logging to true so that we can see whats happening in the browser console log. [OPTIONAL]
        $.connection.hub.logging = true;
        // Start the hub
        $.connection.hub.start();

        myHub.client.newMessageReceived = function (message) {
            alert(message);
        }
在我的Hub.cs服务器中,我有:

public override Task OnConnected()
        {
            var connectionId = Context.ConnectionId;

            // here do other stuff...

            return base.OnConnected();
        }
第一次进入主页时,我可以看到我得到了一个
connectionId
,但是如果我再次重新加载页面,我会得到一个不同的页面,这是因为jquery脚本再次被调用

如何在我的客户端中检测我是否已连接,以便每次刷新该页面时都不会
start()
hub


我有一个类似的场景,重定向启动另一个连接到SignalR的请求-我通过检查
连接.state
并过滤掉请求,除非连接处于
断开的状态。我使用的是angular+rxjs,但希望类似的原则仍然适用:

在中心服务中
this.connection=new-HubConnectionBuilder()
.withUrl(`${environment.apiUrl}/hubRoute`)
.configureLogging(日志级别.警告)
.build();
然后在请求中连接到信号器
filter(()=>this.hubService.connection.state===HubConnectionState.Disconnected)
//可以安全地调用hubService.connection.start();

希望这能帮助其他人在同样的事情上绊倒

保存
localStorage
上的
connectionId
…检查您的
localStorage
上的
connectionId
是否已经有了值,如果已经有了值,那么就不要执行那段代码,如果没有,就执行那段代码…只是一个
如果没有
的解决方案…我认为您问错了问题。这是一个不同的连接,所以是一个新的连接ID。很难将两者联系在一起——在关闭旧选项卡的同时打开新选项卡与重新加载之间没有太大区别。你的任何建议都会带来负面影响。您正在询问如何实施有缺陷的解决方案-您的基本需求是什么?