SignalR跨域客户端无法连接到服务器

时间:2015-04-17 20:41:45

标签: signalr

我是SignalR的新手。我读过这篇文章http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client  并试图做一些测试。当它们不是跨域时,测试是成功的。但是,如果我跨域,它似乎没有连接,我不知道为什么。我在这个网站上看到了一些类似问题,但我的问题似乎并没有落在讨论的场景中。

这是我的简单创业:

using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Microsoft.Owin.Cors;
using Owin;

[assembly: OwinStartup(typeof(HandleTransientState.Startup))]

namespace HandleTransientState
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.Map("/signalr", map =>
            {
                map.UseCors(CorsOptions.AllowAll);
                map.RunSignalR();
            });
        }
    }
}

我的简单中心:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;

namespace HandleTransientState
{
    [HubName("echo")]
    public class EchoHub : Hub
    {
        public string sayhello()
        {
            return "Hello from server!";
        }
    }
}

最后我的客户:(我检查并确保端口与"服务器"的端口匹配,基本上客户端和服务器在同一台机器上,因此不应该有任何网络或防火墙问题。当客户端启动时,我只收到了来自客户端的消息,而不是来自服务器的消息'来自服务器'在进一步调查后,它似乎是$ .connection.hub .start()没有成功。请帮忙。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="Scripts/jquery-1.6.4.js"></script>
    <script src="Scripts/jquery.signalR-2.2.0.js"></script>
    <script src="http://localhost:55825/signalr/hubs"></script>
    <script>
        $(function () {
            var echo = $.connection.echo;
            $.connection.hub.url = "http://localhost:55825/signalr";
            echo.client.greetings = function (m) {
                $('#messages').append($('<li/>').html(m));
            };
            echo.client.greetings('Hello from client...');
            $.connection.hub
                .start()
                .done(
                        function () {
                                        echo.greetings('Trying to connect to the server...');
                                        echo.server.sayhello()
                                                   .done(function (m) {
                                                       $('#messages').append($('<li/>').html(m));
                                   });
            });
        });
    </script>
</head>
<body>
    <ul id="messages"></ul>
</body>
</html>

更新

在$ .connection.hub.start()完成后调用echo.client.greetings,执行了调用。刚刚跳过启动集线器,没有错误,没有失败...... enter image description here

0 个答案:

没有答案