gpt4 book ai didi

javascript - 使用 Clients.Group 时 SignalR Javascript 客户端回调未触发

转载 作者:行者123 更新时间:2023-11-29 22:17:16 26 4
gpt4 key购买 nike

我正在使用 SignalR RC2,这是我的集线器

public class ImgHub : Hub
{
public void Create(string guid)
{
Groups.Add(Context.ConnectionId, "foo");
}

public void SendMsg(string msg)
{
Clients.Group("foo").send(msg);
}
}

我有一个控制台应用程序和一个连接到此集线器的网络应用程序 (asp.net webforms)。控制台应用程序按我的预期工作,问题出在 Javascript 部分。当我在 SendMsg 中使用 Clients.Group 时,“发送”回调不会触发,如果我将 SendMsg 更改为此

public void ShareImage(byte[] image, string guid)
{
Clients.All.ReceiveImage(image);
}

它有效。这是Javascript代码

<script src="Scripts/jquery-1.7.1.min.js"></script>
<script src="Scripts/jquery.signalR-1.0.0-rc2.min.js"></script>
<script src="http://localhost:4341/signalr/hubs/" type="text/javascript"></script>
<script type="text/javascript">
var mainHub;
$(function () {
$.connection.hub.url = 'http://localhost:4341/signalr';
// Proxy created on the fly
mainHub = $.connection.imgHub;

mainHub.client.send = function (msg) {
alert(msg);
};

// Start the connection
$.connection.hub.start(function() {
mainHub.server.create('vanuit den JS');
})
.done(function() {
$('#msgButton').click(function() {
mainHub.server.sendMsg("msg from JS");
});
});
});

</script>

如您在 JS 代码中所见,我在页面上还有一个调用 SendMsg 函数的按钮,消息确实到达了控制台应用程序,因此我猜测 JS 客户端已正确注册到 SignalR 组中。

我不是 JS 专家,所以我希望比我更了解它的人可以在这里帮助我。

最佳答案

这是因为您需要在全局 asax 中启用重新加入组。

GlobalHost.HubPipeline.EnableAutoRejoiningGroups();

这里有更多详细信息: http://weblogs.asp.net/davidfowler/archive/2012/11/11/microsoft-asp-net-signalr.aspx

此方法调用将在 1.0 RTM 中消失,但现在您需要这样做。

关于javascript - 使用 Clients.Group 时 SignalR Javascript 客户端回调未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14401825/

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