[英]Calling server and client method in SignalR
下面的代碼使用ASP.Net SignalR Hub技術。 這些代碼無法正常工作。 當我單擊Hello Butting時,它工作正常,但當我單擊UserList時,沒有任何反應。 我發出警報,發現服務器方法正在調用,但是此后什么也沒發生。
JavaScript的
$(function () {
// Declare a proxy to reference the hub.
var chat = $.connection.chatHub;
chat.client.OnlineFriends = function (userLists) {
alert(userLists);
};
chat.client.Hello = function (message) {
alert(message);
};
// Start the connection.
$.connection.hub.start().done(function () {
$('#btnGetUser').click(function () {
chat.server.Friends();
});
$('#btnHello').click(function () {
chat.server.test("message to server from client");
//
});
});
});
和C#代碼
public class ChatHub : Hub
{
public void Test(string str)
{
Clients.Caller.Hello(str + " | Message received at server reply from server.");
}
public void Friends()
{
Clients.Caller.OnlineFriends("myid");
}
}
和HTML
<div>
<input type="button" id="btnHello" value="Hello" />
<input type="button" id="btnGetUser" value="UserList" />
</div>
請幫助找出問題所在。
你能換行嗎
chat.server.Friends();
至:
chat.server.friends();
我猜生成的javascript具有有關命名的Java約定。 這是我從這兩種方法中可以看到的唯一區別。
如@scheien所述,您需要使用小寫首字母來調用該方法。 (可選)您可以指定集線器方法名稱,如此處所述 。
[HubMethodName("MyNewMethodName")]
public void Friends()
然后使用該新名稱調用服務器功能
chat.server.MyNewMethodName();
chat.client.onlineFriends = function (userLists) {
alert(userLists);
};
但是......集線器上不存在userLists
:
Clients.CalleronlineFriends("myid");
這是一回事,引起我注意的另一件事是javascript部分不是以大寫字母開頭
因此,您還必須將Friends
, Hello
, OnlineFriends
為friends
, hello
onlineFriends
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.