У меня есть базовое c приложение чата, настроенное следующим образом:
$(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 различным функциональным областям?