Я изо всех сил пытаюсь подключить свой код C# к существующему концентратору SignalR. Этот концентратор создан в SignalR 1.0
У меня довольно прямая ситуация. Втулка определяется следующим образом:Метод не может быть разрешен в концентраторе SignalR 1.0 в C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR.Hubs;
namespace POC.SignalR.WebHost.Hubs
{
[HubName("SignalRHub")]
public class SignalRHub : Hub
{
/// <summary>
/// Joins the group.
/// </summary>
/// <param name="groupname">The groupname.</param>
public void JoinGroup(string groupname)
{
Groups.Add(Context.ConnectionId, groupname);
Clients.OthersInGroup(groupname).newMemberMessage(Context.ConnectionId);
Clients.Caller.JoinedGroup(groupname);
}
Когда я подключаюсь к концентратору, используя Javascript, все это работает как шарм.
// Check if url exists and give it a default value if that's the case.
if (!url) { url = 'http://www.someurl.com/signalr'; }
conn = $.connection.SignalRHub;
var currentGroupName = '';
if (typeof groupName == "string") currentGroupName = groupName;
$.connection.hub.url = url;
$.connection.hub.logging = true;
// Start the connection
$.connection.hub.start().done(function() {
verbosemsg(conn.connection.state);
conn.server.connectionName();// init to get my connectioID
verbosemsg('Connection made now joining group:' + currentGroupName);
if (currentGroupName != '') conn.server.joinGroup(currentGroupName);
});
Но при подключении к концентратору в C#, используя следующий код, я постоянно бегаю в «метод„JoinGroup“не может быть решена.» ошибка. HubConnection находится в состоянии «подключено» и кажется правильным.
HubConnection hubConnection = new HubConnection("http://www.someurl.com/signalr", false);
IHubProxy hubProxy = hubConnection.CreateHubProxy("SignalRHub");
hubConnection.Start().Wait();
hubProxy.Invoke("JoinGroup", hubConnection.ConnectionId, "SignalRChatRoom").Wait();
Насколько я могу видеть, я реализовал свой код, аналогичный как можно заметить на этом примере: http://www.asp.net/signalr/overview/older-versions/signalr-1x-hubs-api-guide-net-client#establishconnection Там должно быть что-то я упускать из виду, но я не могу понять это. Было бы здорово, если бы кто-то мог указать мне в правильном направлении.
Thx.
Не следует ли URL быть «HTTP: //www.someurl.com/signalr/hub?» Если вы просто запустите «http://www.someurl.com/signalr» в своем браузере, что вы видите? Вы видите сгенерированный прокси? – Gjohn
вы вызываете метод «JoinGroup» с двумя параметрами, в то время как методы на сервере принимают только параметр - имя группы. Это должно работать: 'hubProxy.Invoke (« JoinGroup »,« SignalRChatRoom »);'. Также вы не должны использовать '.Wait()', но 'await', иначе вы можете иметь взаимоблокировки. – Pawel