私はSignalRRC2を使用しています、これは私のハブです
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 Webフォーム)があります。コンソールアプリケーションは私が期待するとおりに動作しますが、問題はJavascriptの部分にあります。SendMsgをこれに変更すると、SendMsgでClients.Groupを使用しているときに、「send」コールバックが起動しません。
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のスペシャリストではないので、それについてもっと知っている人がここで私を助けてくれることを願っています。