signalr - 与不同的客户

时间:2016-03-02 15:21:17

标签: javascript signalr

我正在尝试设置signalR系统。

我使用两个浏览器和相同的集线器来运行示例代码。消息被发送和接收。

现在,当我创建一个不同的页面,并尝试向集线器发送消息时,它似乎有点工作,这意味着它不会爆炸,但没有任何东西被传输到其他客户端。

我以为我是从所有客户端访问同一个消息中心,但也许我错过了一些东西。

是否可以将不同的网站连接到同一个消息中心?

开始编辑

根据要求....这是我在第二个客户端使用的代码...

  var connection = $.hubConnection('http://xxxxxxxxx.azurewebsites.net/');
  var contosoChatHubProxy = connection.createHubProxy('MessagePump');
// contosoChatHubProxy.on('Send', function (name, message) {console.log(name + ' ' + message);});


  $.connection.hub.start()
.done(function () {
  console.log('Now connected, connection ID=' + $.connection.hub.id);  // returns an ID
  //      $.connection.hub.send('testing', 'this is a test from the client');
  //      contosoChatHubProxy.send("testing");
  //      contosoChatHubProxy.invoke('testing', 'this is a test for the client 1');
  //      contosoChatHubProxy.invoke('say', 'this is a test for the client 2');
  //      contosoChatHubProxy.invoke('Send', 'This is a test for client 3');
  //      $.connection.hub.send('testing', 'this is a test from the client 4');
  contosoChatHubProxy.invoke('messagePump', 'user', 'this is a test message for 5');
})
.fail(function(){ console.log('Could not Connect!'); });

这就是我在firebug中看到的

enter image description here

从我能做的代码来看,代理似乎是在本地加载,甚至没有看到远程系统集线器......

仅连接到远程系统集线器的我的控制台应用程序能够发送和接收消息。

btw - 我试过上层可以小写(MessagePump,messagePump) 但它没有改变结果。

1 个答案:

答案 0 :(得分:0)

 var connection = $.hubConnection('http://xxxxxxxxx.azurewebsites.net/');

您正在尝试连接其他网站。此http://xxxxxxxxx.azurewebsites.net/应该允许跨域请求。否则您无法连接。如果您可以管理http://xxxxxxxxx.azurewebsites.net/,则应配置信号器,如:

   public class Startup
     {
        public void Configuration(IAppBuilder app)
        {
            // Branch the pipeline here for requests that start with "/signalr"
            app.Map("/signalr", map =>
            {
                // Setup the CORS middleware to run before SignalR.
                // By default this will allow all origins. You can 
                // configure the set of origins and/or http verbs by
                // providing a cors options with a different policy.
                map.UseCors(CorsOptions.AllowAll);
                var hubConfiguration = new HubConfiguration 
                {
                    // You can enable JSONP by uncommenting line below.
                    // JSONP requests are insecure but some older browsers (and some
                    // versions of IE) require JSONP to work cross domain
                    // EnableJSONP = true
                };
                // Run the SignalR pipeline. We're not using MapSignalR
                // since this branch already runs under the "/signalr"
                // path.
                map.RunSignalR(hubConfiguration);
            });
        }
    }