2017-04-06 52 views
1

集線器碼SignalR。廣東話達到OnConnected()

public class TestHub : Hub 
    { 
     public void Message(string message) 
     { 
       Clients.Group("testGroup").displayMessage(message); 
     } 
     public override Task OnConnected() 
     { 
      Groups.Add(Context.ConnectionId, "testGroup"); 
      return base.OnConnected(); 
     } 
    } 

JavaScript代碼生成的代理

var myHub = $.connection.testHub; 
myHub.on('message', this.displayMessage); 

$.connection.hub.start(); 



function displayMessage(message) { 
console.log(message); 
} 

如果我做了它上面好像hub.start()運行正常,並返回一些對象的形式。但是,當我用OnConnected內斷點調試時,我從來沒有打過。

有什麼建議嗎?

+1

您缺少一些代碼。看看這個https://github.com/SignalR/SignalR/issues/1065 –

+0

認爲它和myHub.on相同('message',this.displayMessage);或者我錯過了什麼? –

回答

3

Basiclly,您可以調用集線器方法,但如果您沒有集線器上的訂閱,OnConnect將不起作用。 這很奇怪,但這是它的工作方式。

做這樣的:

var myHub = $.connection.testHub; 

//add subscriptions 
$.extend(myHub.client, { 
    stupidLogicSignalR: function() {} 
}); 

myHub.on('message', this.displayMessage); 
$.connection.hub.start(); 

Here's類似的問題。 另外這款issue可以幫助

0

曾與其他語法的認購

myHub.client.displayMessage =() => {console.log('message');}; 
+0

我的回答沒有幫助你解決這個問題嗎?你使用的線條和我告訴你添加的完全一樣。 –

0

使得能夠通過在前端記錄(var myHub = $.connection.testHub;後做):

$.connection.hub.logging = true; 

或指定一個回調。發件人:

$.connection.hub.start().done(function() { 
console.log("connection started") 
});