SignalR SelfHost:从JavaScript客户端调用Signalr服务器的问题

时间:2013-07-31 09:39:01

标签: azure signalr azure-worker-roles signalr-hub signalr.client

我通过引用

自我托管了一个SignalR服务器

Signalr Owin simple example javascript client not being called”和“https://github.com/SignalR/SignalR/wiki/Self-host

链接,但是当我尝试从javascript调用该集线器时,我收到了以下错误

“错误:SignalR:加载集线器时出错。请确保您的集线器引用正确,例如。”

我的自托管服务器看起来像这样:

“Hub Class”

  

使用Microsoft.AspNet.SignalR;   使用系统;运用   System.Collections.Generic;   使用System.Linq;   使用System.Text;   使用System.Threading.Tasks;   使用Microsoft.Owin.Hosting;   使用Owin;   命名空间SignalrWorker {     公共课聊天:Hub       {          public void Send()          {              Clients.All.send( “你好”);          }       }     }

“启动课程”

  

使用System;   使用System.Collections.Generic;   使用System.Linq;   使用System.Text;   使用System.Threading.Tasks;   使用Microsoft.AspNet.SignalR;   使用Owin;

     

命名空间SignalrWorker {       公共课启动       {           public void Configuration(IAppBuilder app)           {               //打开跨域               var config = new HubConfiguration {EnableCrossDomain = true,EnableJavaScriptProxies = true,EnableDetailedErrors = true};

        // This will map out to http://localhost:8080/signalr by default
        app.MapHubs(config);
    }
} 
     

}

“Azure工作者角色”

  

使用System;   使用System.Collections.Generic;   使用System.Diagnostics;   使用System.Linq;   使用System.Net;   使用System.Threading;   使用Microsoft.WindowsAzure;   使用Microsoft.WindowsAzure.Diagnostics;   使用Microsoft.WindowsAzure.ServiceRuntime;   使用Microsoft.WindowsAzure.Storage;   使用Microsoft.AspNet.SignalR;   使用Owin;   使用Microsoft.Owin.Hosting;

     

命名空间SignalrWorker {       public class WorkerRole:RoleEntryPoint       {           public override void Run()           {               //这是一个示例工作者实现。替换你的逻辑。               Trace.TraceInformation(“SignalrWorker入口点称为”,“信息”);               尝试               {

            using (WebApp.Start<Startup>("http://127.0.0.1:82/"))
            {
                Trace.TraceInformation("Working", "Server running at http://127.0.0.1:82/");
            }


            while (true)
            {
                Thread.Sleep(10000);
                Trace.TraceInformation("Working", "Information");

            }
        }
        catch (Exception ex)
        {
            Thread.Sleep(1000);
            Trace.WriteLine("Error", ex.Message);
        }
    }

    public override bool OnStart()
    {
        // Set the maximum number of concurrent connections
        ServicePointManager.DefaultConnectionLimit = 12;

        // For information on handling configuration changes
        // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.

        return base.OnStart();
    }
} 
     

}

AignalR客户端如下:

                      @ ViewBag.Title - 我的ASP.NET MVC应用程序                           @ Styles.Render( “〜/内容/ CSS”)       @ * @ Scripts.Render(“〜/ bundles / modernizr”)* @

</head>
<body>
    <header>
        <div class="content-wrapper">
            <div class="float-left">
                <p class="site-title">@Html.ActionLink("your logo here", "Index", "Home")</p>
            </div>
            <div class="float-right">
                <section id="login">
                    @Html.Partial("_LoginPartial")
                </section>
                <nav>
                    <ul id="menu">
                        <li>@Html.ActionLink("Home", "Index", "Home")</li>
                        <li>@Html.ActionLink("About", "About", "Home")</li>
                        <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
                    </ul>
                </nav>
            </div>
        </div>
    </header>
    <div id="body">
        @RenderSection("featured", required: false)
        <section class="content-wrapper main-content clear-fix">
            @RenderBody()
        </section>
    </div>
    <footer>
        <div class="content-wrapper">
            <div class="float-left">
                <p>&copy; @DateTime.Now.Year - My ASP.NET MVC Application</p>
            </div>
        </div>
    </footer>

    @Scripts.Render("~/bundles/jquery")
 <script src="~/Scripts/jquery.signalR-1.1.2.js"></script>
     <script type="text/javascript" src="http://127.0.0.1:82/signalr/hubs"></script>
    <script type="text/javascript">
        $(function () {


           /* // Proxy created on the fly
            var myHub = $.connection.chat;

            // Declare a function on the hub so the server can invoke it
            myHub.send = function (message) {
                console.log("hi");
            };
            */
            // Start the connection
            $.connection.hub.url = 'http://127.0.0.1:82/signalr';
            $.connection.hub.start(function() {
                console.log("hi");
            });


        });
    </script>
</body>

由于工作陷入困境,请尽快帮助

提前致谢

0 个答案:

没有答案