javascript - 如何跨域使用 SignalR

标签 javascript signalr

我正在尝试将 SignalR 与跨域一起使用,但在调用启动函数时收到错误消息。错误消息是 "Uncaught TypeError: Cannot call method 'start' of undefined "

我正在使用代码 服务器端:

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

    namespace SignalRChat
    {
        public class Startup
        {
            public void Configuration(IAppBuilder app)
            {
                app.Map("/signalr", map =>
                {              
                    map.UseCors(CorsOptions.AllowAll);
                    var hubConfiguration = new HubConfiguration
                    {                   
                       EnableJSONP = true
                    };               
                    map.RunSignalR(hubConfiguration);
                });
            }
        }
    }

客户端代码。

 <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script src="/Scripts/jquery-1.6.4.min.js"></script>   
        <script src="/Scripts/jquery.signalR-1.1.4.min.js"></script>
    </head>
    <body>
       <div></div>
       <script type="text/javascript">
        var connection = $.connection.hub.url ='http://localhost:9370/signalr';      
        connection.hub.start()
          .done(function () {
              alert('Now connected, connection ID=' + connection.id);
          });
      </script>
      </body>
      </html>

最佳答案

您的 Signalr 连接的初始化和启动存在问题,还声明了一个代理来引用集线器。请参见以下示例:

<script src="/Scripts/jquery-1.6.4.min.js"></script>   
<script src="/Scripts/jquery.signalR-1.1.4.min.js"></script>
<script src="http://localhost:9370/signalr/hubs"></script>

 <script type="text/javascript">
    $.connection.hub.url ='http://localhost:9370/signalr';
    var yourHubProxy = $.connection.YourHubName;

    //Do something here with yourHubProxy

    $.connection.hub.start().done(function () {
        alert('Now connected, connection ID=' + $.connection.hub.id);
     });
 </script>

另一件事,我不确定您为什么在服务器端和客户端使用不同版本的 SignalR。对我来说,你的服务器端有 SignalR 2.x,而你的客户端有 SignalR 1.1.4

看看下面的链接,这是一个很好的跨域 SignalR 示例。 http://damienbod.wordpress.com/2013/11/01/signalr-messaging-with-console-server-and-client-web-client-wpf-client/

关于javascript - 如何跨域使用 SignalR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21449713/

相关文章:

javascript - 解析angular2中的xml以在 View 中呈现

azure - 使用 SignalR Hub 交换 Azure 暂存/生产环境

signalr - SystemJS 和 SignalR

javascript - Mongo 获取查询的逆

javascript - 当元素位于不同的父元素内时,使用 jQuery 查找元素排序

c# - SignInManager IsSignedIn 在 SignalR 集线器中返回 false

c# - 无状态可扩展 Web 应用程序中 SignalR (WebSockets) 连接的架构

signalr - 为什么在通过 NuGet 更新到最新的 SignalR 库后 IAppBuilder 未定义?

javascript - 如何使用Tabulator进行全行搜索?

javascript - 调用 javascript 函数以从无法按预期工作的表单进行 AJAX 调用