Я новичок в SignalR, и я пытаюсь интегрировать его с сайтом AngularJS и WebAPI. Я сначала выполнил отличный этот пример. Однако, как я уже упоминал, веб-сайт, над которым я работаю, будет находиться на другом сервере, нежели проект WebAPI.
В моей среде разработки я создал локальный сайт для Angular, размещенный в IIS на localhost: 60000 / 127.0.0.1: 60000, а WebAPI живет на localhost: 31374 (в VS2013 с использованием IIS Express). Это имитирует 2 разные серверы, на которых будут жить проекты.
В моем проекте Angular я пытаюсь подключиться к концентратору SignalR, выполнив следующие действия:
var connection = $.hubConnection();
$.connection.hub.url = "http://localhost:31374/signalr";
//$.connection.url = "/signalr";
//$.conenction.baseUrl = "http://localhost:31374";
this.proxy = connection.createHubProxy('foos');
console.clear();
// start connection
console.log(connection);
connection.start();
this.proxy.on('newFoo', function (data) {
$rootScope.$emit("newFoo", data);
});
Результат в консоли выглядит так:
В моем коде вы можете видеть, что я пытаюсь установить URL-адрес концентратора (и в комментариях чуть ниже, я пытался установить свойства объекта подключения вручную). Однако на снимке экрана вы можете видеть, что ни URL-адрес или baseURL - это то, что я установил, на самом деле baseURL по-прежнему указывает на сайт Angular на http://127.0.0.1:60000/ вместо http://localhost:31374/.
Что мне не хватает?
xdomain
, это то, что имеет самое большое значение? 07.05.2015.start
. Однако я включил это значение в качестве запасного варианта на тот случай, если вы использовали старую версию signalr, см. этот вопрос для получения дополнительных сведений. Рад, что это работает для тебя, несмотря ни на что 07.05.2015