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。很难将两者联系在一起——在关闭旧选项卡的同时打开新选项卡与重新加载之间没有太大区别。你的任何建议都会带来负面影响。您正在询问如何实施有缺陷的解决方案-您的基本需求是什么?