【问题标题】:It's possible signalR client web to connect a server on a different PC?SignalR客户端网络可以连接不同PC上的服务器吗?
【发布时间】:2015-05-28 16:29:21
【问题描述】:

我的 PC 上有一个作为 signalR 服务器的控制台应用程序。

我有一个 html 页面,它是 Internet 上的 signalR 客户端。但我尝试连接服务器,但我有一个错误的请求 400 错误。如果服务器宕机,我有另一个响应。

signalR 客户端是否可以连接 PC 上的服务器?

(对不起我的英语)

我的页面

<input type="text" id="msg" value=" " />
    <input type="button" id="send" value="send" />
    <ul id="message">
    </ul>
    <script src="Scripts/jquery-1.6.4.min.js"></script>
    <script src="Scripts/jquery.signalR-1.1.2.min.js"></script>
    <script>
        $(function () {
            jQuery.support.cors = true;
            // Open a connection to the remote server
            var connection = $.hubConnection('http://MyIpAddress:8080');
            var chat = connection.createHubProxy('chat');

            chat.on('send', function (message) {
                $('#message').append('<li>' + message + '</li>');
            });

            // Turn logging on so we can see the calls in the browser console
            connection.logging = true;

            connection.start().done(function () {
                $('#send').click(function () {
                    chat.invoke('send', $('#msg').val());
                });
            });
        });
    </script>

我的服务器代码

using Microsoft.Owin.Hosting;
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;

//Install-Package Microsoft.Owin.Hosting -pre
//Install-Package Microsoft.Owin.Host.HttpListener -pre

namespace TestServer
{
    class Program
    {
        static void Main(string[] args)
        {
            LocalIPAddress();
            string url = "http://localhost:8080";

            using (WebApplication.Start<Startup>(url))
            {
                Console.WriteLine("Server running on {0}", url);
                Console.ReadLine();
            }
        }
   }
}

Startup.cs

using Microsoft.AspNet.SignalR;
using Owin;

namespace TestServer
{
    public class Startup
    {
        // This method name is important
        public void Configuration(IAppBuilder app)
        {
            var config = new HubConfiguration
            {
                EnableCrossDomain = true
            };

            app.MapHubs(config);
        }
    }
}

聊天.cs

using Microsoft.AspNet.SignalR;
using System;
using System.Threading.Tasks;

namespace TestServer.Hubs
{
    public class Chat : Hub
    {
        public override Task OnConnected()
        {
            Console.WriteLine("OnConnected " + Context.ConnectionId);
            return base.OnConnected();
        }

        public void Send(string message)
        {
            Console.WriteLine(string.Format("Receive: {0} by {1} ", message, Context.ConnectionId));
            Clients.All.send(message);
        }       
    }
}

【问题讨论】:

  • 始终显示您的代码。很难回答必须对您“可能”做了什么做出假设的问题。
  • 他们的文档建议您不要使用 'jQuery.support.cors = true;' asp.net/signalr/overview/guide-to-the-api/…(需要从链接在页面上的位置稍微向上滚动)

标签: c# signalr http-status-code-400 signalr.client


【解决方案1】:

在你的 JS 初始化的第一行怎么样:

$.connection.hub.url = "你的网址";

【讨论】:

  • 就这么简单!非常感谢。
  • $.connection.hub.url = 'http://localhost:1234/signalr'; 我必须添加“/signalr”,它工作得很好。谢谢!
【解决方案2】:

我也遇到了同样的问题,虽然问题发布已经有一段时间了,但我就是这样解决的:

我在服务器代码中更改了网址:

string url = "http://localhost:8080";

到:

string url = "http://*:8080";

或:

string url = "http://+:8080";

这改变了绑定范围,但对我来说它解决了一些问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 2011-12-26
    • 2011-10-14
    • 2021-03-09
    相关资源
    最近更新 更多