我尝试使用SignalR

时间:2016-01-11 08:16:39

标签: c# signalr

我正在尝试使用 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”类型异常   附加信息:调用目标抛出了异常。

1 个答案:

答案 0 :(得分:1)

假设您在某个服务器上托管SignalR,您可以使用服务器的主机名/ IP地址以及配置为此监听的端口。

不幸的是,如果没有关于究竟是什么引起异常的额外信息,很难提供额外的帮助。