簡體   English   中英

在SignalR中調用服務器和客戶端方法

[英]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部分不是以大寫字母開頭

因此,您還必須將FriendsHelloOnlineFriendsfriendshello onlineFriends

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM