我有一个基本的聊天应用程序设置如下:
$(function () {
// Set up references for other functions to call
chatConnection = $.connection.chatHub;
// Set up callbacks before starting server connection
chatConnection.client.addNewMessageToPage = function (name, message) {
var prettyMessage = name + ':' + message;
$('#chatHistory').append(prettyMessage);
$("#chatHistory").animate({ scrollTop: $('#chatHistory').prop("scrollHeight") }, 10);
};
// Start up connection to server, set up events
$.connection.hub.start().done(function () {
$('#sendChatButton').click(function () {
// Call the Send method on the hub.
chatConnection.server.sendMessage($('#displayName').val(), $('#chatBox').val());
// Clear text box and reset focus for next comment.
$('#chatBox').val('').focus();
});
});
});
这将调用我的ChatHub.cs服务器端,并且我正在收到和传递消息,如您所愿。
public void SendMessage(string name, string message)
{
Clients.All.addNewMessageToPage(name, message);
}
现在我要添加功能。我有一个与我的ChatHub几乎完全相同的新类,称为“ GameHub”,它的工作是处理移动而不是处理聊天。到目前为止,我有这样的事情:
$(function () {
// Set up references for other functions to call
chatConnection = $.connection.chatHub;
gameConnection = $.connection.gameHub;
// Set up callbacks before starting server connection
chatConnection.client.addNewMessageToPage = function (name, message) {
var prettyMessage = name + ':' + message;
$('#chatHistory').append(prettyMessage);
$("#chatHistory").animate({ scrollTop: $('#chatHistory').prop("scrollHeight") }, 10);
};
gameConnection.client.receiveMove = function (name, move){
alert(name + ' played ' + move);
};
// Start up connection to server, set up events
$.connection.hub.start().done(function () {
$('#sendChatButton').click(function () {
// Call the Send method on the hub.
chatConnection.server.sendMessage($('#displayName').val(), $('#chatBox').val());
// Clear text box and reset focus for next comment.
$('#chatBox').val('').focus();
});
$('#sendMoveButton').click(function () {
gameConnection.server.sendMove(getMove());
});
});
});
,但是没有任何东西可以到达服务器。这是因为我没有正确设置吗? signalR甚至可以支持2个集线器,还是应该是一个集线器,然后从那里“辐射”到我的2个不同的功能区域?
答案 0 :(得分:1)
您可以但由于没有性能差异,因此将这些功能集中在一个集线器中更为简单。所有数据将到达所有集线器,因为它们都共享相同的连接。
如here所述。
您可以检查(由于未提供)您的游戏中心和方法,以确保在服务器端已正确命名和区分大小写。可能的问题...