我正在使用 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);
}
}
我有一个控制台应用程序和一个连接到这个集线器的 web 应用程序(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 专家,所以我希望知道更多关于它的人可以帮助我。