Я создал приложение SignalR Selfhosted, но не могу получить к нему доступ через браузеры или Windows Phone (это мой клиент). Я следовал нескольким руководствам, и они в значительной степени говорят одно и то же, я считаю, что ошибка связана с моей конфигурацией сети, также обратите внимание, что при запуске проекта IIS не срабатывает (не уверен, что это также требуется).
Сервер Сигнала:
class Program : Hub
{
private static HubConnection Connection { get; set; }
private static IHubProxy HubProxy { get; set; }
const string Url = "http://*:8080";
static void Main(string[] args)
{
// This will *ONLY* bind to localhost, if you want to bind to all addresses
// use http://*:8080 to bind to all addresses.
// See http://msdn.microsoft.com/en-us/library/system.net.httplistener.aspx
// for more information.
using (WebApp.Start(Url))
{
Console.WriteLine("Servidor rodando em {0}", Url);
Console.ReadLine();
}
}
private static void Connection_Closed()
{
Connection = null;
}
}
class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
}
}
Ошибка:
Связь не установлена.
Мой клиентский класс:
public class SignalRService : PhoneApplicationPage
{
public String UserName { get; set; }
public IHubProxy HubProxy { get; set; }
private const string ServerURI = "http://localhost:8080";
public HubConnection Connection { get; set; }
public SignalRService()
{
UserName = "Luizaooo";
ConnectAsync();
}
public void ObterAtualizacoesProdutos()
{
ProdutoService produtoService = new ProdutoService();
var dataHora = produtoService.ObterDataHoraUltimaAtualizacao();
HubProxy.Invoke("ObterAtualizacoes", dataHora);
MessageBox.Show("passou");
}
private async void ConnectAsync()
{
Connection = new HubConnection(ServerURI);
Connection.Closed += Connection_Closed;
HubProxy = Connection.CreateHubProxy("ProdutoHub");
HubProxy.On<List<Produto>>("AtualizarProdutos", (ListaDeProdutos) =>
this.Dispatcher.BeginInvoke(() =>
{
var a = ListaDeProdutos;
}));
try
{
await Connection.Start();
}
catch (Exception e)
{
MessageBox.Show(e.Message);
return;
}
}
private void Connection_Closed()
{
Connection = null;
}
}