我正在使用SignalR向客户端发送实时更新消息。发送消息在Chrome中正常工作,在Firefox和IE中失败
接收邮件在Chrome,Firefox和IE中正常工作。这意味着,我可以从我的服务器发送一些来自我的Hub的内容,并且它没有问题地到达客户端
public void Receive(string whatever)
{
// This correctly invokes a function on the clients end.
Client.sayHello("Test");
}
发送从客户机到服务器的消息不会在Firefox和IE浏览器,但能正常工作在谷歌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
在谷歌Chrome中,POST是永远不会被调用,也许这就是为什么它在那里工作。我所看到的是negotiate
和connect
的POST。这是我在接下教程之后所期望的,以及自从SignalR came out以来一直没有想到的!
在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}
任何想法是什么导致了这个非常奇怪的问题?
什么是您的点击处理程序的JavaScript代码? –
@TimBJames:请参阅编辑。 – sergserg