我正在尝试使用 SignalR 创建服务器客户端通信。我已设法在本地执行该通信。我的服务器端代码如下:
class Program
{
static private IDisposable SignalR { get; set; }
const string ServerURI = "http://localhost:1234";
private static IHubProxy HubProxy { get; set; }
private static HubConnection Connection { get; set; }
static void Main(string[] args)
{
SignalR = WebApp.Start(ServerURI);
Console.WriteLine("Server running at " + ServerURI);
Connection = new HubConnection(ServerURI);
HubProxy = Connection.CreateHubProxy("MyHub");
HubProxy.On<string, string>("SendMessage", (name, message) => Console.WriteLine(name + ":" + message));
Connection.Start().Wait();
string messageToSentToClients;
do
{
Console.WriteLine("Type someting to send to clients and press enter");
messageToSentToClients = Console.ReadLine();
HubProxy.Invoke("Send", "Server", messageToSentToClients);
} while (messageToSentToClients != "exit");
}
}
public class MyHub : Hub
{
public void Send(string name, string message) { Clients.All.sendMessage(name, message); }
}
class Startup
{
public void Configuration(IAppBuilder app) { app.MapSignalR(); }
}
该代码正在与位于同一位置的客户合作。我想与同一个局域网中的客户端合作,但不是在同一台机器上。在ServerURI的情况下,我应该更换什么才能与不在同一台机器上的客户端一起工作?我怎么能把机器的ip放进去,因为当我尝试以下时我失败了:
const string ServerURI = "http://ip:port";
我从第SignalR = WebApp.Start(ServerURI);
行获得了以下消息:
mscorlib.dll中发生未处理的“System.Reflection.TargetInvocationException”类型异常 附加信息:调用目标抛出了异常。
答案 0 :(得分:1)
假设您在某个服务器上托管SignalR,您可以使用服务器的主机名/ IP地址以及配置为此监听的端口。
不幸的是,如果没有关于究竟是什么引起异常的额外信息,很难提供额外的帮助。