SignalR を使用して、リアルタイムの更新でクライアントにメッセージを送信しています。
メッセージの受信は、Chrome、Firefox、および IE で正常に機能します。つまり、サーバーからハブから何かを送信でき、問題なくクライアントに到達します。
public void Receive(string whatever)
{
// This correctly invokes a function on the clients end.
Client.sayHello("Test");
}
クライアントからサーバーへのメッセージの送信は、Firefox と IE の両方では機能しませんが、Google Chrome 21 では正常に機能します。
Firefox では、Firebug のコンソールを使用して、ページが読み込まれるとすぐに発生する一連のイベントを次に示します。
GET http://localhost:12962/signalr/signalr/negotiate?_=1348547579430 200 OK 12ms
POST http://localhost:12962/signalr/signalr/send?transport=serverSentEvents&connectionId=b6fdd67f-6a71-4e5f-80cf-9e2b90cc7fe3 200 OK
Google Chrome では、その POST が呼び出されることはありません。おそらくそれがそこで動作する理由です。私が見るのはnegotiate
andの POST だけですconnect
。これは、チュートリアルに従って、 SignalR が登場して以来、私が期待するようになったものです!
Firefox では、サーバーに向けてメッセージを送信するはずのボタンをクリックするたびに、これがコンソールに記録されます。
$(document).ready(function() {
var chat = $.connection.chat;
/* Actions when someone clicks the Bid button. */
$(".pujar").click(function () {
chat.receive($(this).siblings('.auction-id').text());
$(this).parent().siblings('.seconds').text('15');
});
chat.updateAuction = function (message) {
var result = $.parseJSON(message);
var divId = "#" + result.AuctionId;
$(divId + " .seconds").text("15");
$(divId + " .stat .amount").html("$" + result.LanceCost);
$(divId + " .stat .latestbidder").html(result.LatestBidder);
$(divId + " .stat").fadeOut().fadeIn();
};
$.connection.hub.start();
});
POST http://localhost:12962/signalr/signalr/send?transport=serverSentEvents&connectionId=b6fdd67f-6a71-4e5f-80cf-9e2b90cc7fe3 200 OK 16ms
Params
connectionId b6fdd67f-6a71-4e5f-80cf-9e2b90cc7fe3
transport serverSentEvents
Post
data {"hub":"chat","method":"Receive","args":["1"],"state":{},"id":1}
Response
{"State":{},"Result":null,"Id":"1","Error":null,"StackTrace":null}
この非常に奇妙な問題の原因は何ですか?