クライアントシグナルアプリを作成しようとしています。現在、MVCクライアントにハブとの間でメッセージを送受信させることはできますが、.NETクライアントアプリでいくつかの問題に直面しています。
サーバーハブコード:
namespace ServerHub
{
public class ChatterBox : Hub
{
public void Send(string message)
{
Clients.All.addMessage(message);
}
}
}
コンソールアプリコード(ほとんど直接githubから削除されました)
using Microsoft.AspNet.SignalR.Client.Hubs;
using ServerHub;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Say("hello from console");
}
public static void Say(string message)
{
//var connection = new HubConnection("http://localhost/");
//IHubProxy myHub = connection.CreateHubProxy("ChatterBox");
var connection = new HubConnection("http://localhost/");
//Make proxy to hub based on hub name on server
var myHub = connection.CreateHubProxy("ChatterBox");
//Start connection
connection.Start().ContinueWith(task =>
{
if (task.IsFaulted)
{
Console.WriteLine("Failed to start: {0}", task.Exception.GetBaseException());
}
else
{
Console.WriteLine("Success! Connected with client connection id {0}", connection.ConnectionId);
// Do more stuff here
}
});
connection.Send("Hello").ContinueWith(task =>
{
if (task.IsFaulted)
{
Console.WriteLine("Send failed {0}", task.Exception.GetBaseException());
}
else
{
Console.WriteLine("Success");
}
});
}
}
}
中に、以下のエラーメッセージが表示されますconnection.Send()
データを送信する前に、Startを呼び出す必要があります。
どこで私は間違えましたか?
編集:
2回目の試行:
var connection = new HubConnection("http://localhost/");
//Make proxy to hub based on hub name on server
var myHub = connection.CreateHubProxy("ChatterBox");
//Start connection
connection.Start().ContinueWith(task =>
{
if (task.IsFaulted)
{
Console.WriteLine("Failed to start: {0}", task.Exception.GetBaseException());
}
else
{
Console.WriteLine("Success! Connected with client connection id {0}",
connection.ConnectionId);
// Do more stuff here
connection.Send("Hello");
}
});
myHub.Invoke("Send", "lol");
それでもエラーが発生します
編集:3回目の試行
var connection = new HubConnection("http://localhost:60610/");
//Make proxy to hub based on hub name on server
var myHub = connection.CreateHubProxy("ChatterBox");
//Start connection
connection.Start().ContinueWith(task =>
{
if (task.IsFaulted)
{
Console.WriteLine("Failed to start: {0}", task.Exception.GetBaseException());
}
else
{
//Console.WriteLine("Success! Connected with client connection id {0}", connection.ConnectionId);
myHub.Invoke("Send", "lol");
}
});
動作しているようです
また、ポート番号を設定する必要がありました。たとえば、MVC Webサイトを次のように閲覧している場合http://localhost:60610/
、これはコンソールアプリで設定する必要のあるアドレスです。
デフォルトではポート80になるため、展開中は問題にならないということはできますか?