以下代码使用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>
请帮助找出问题所在。
答案 0 :(得分:2)
您可以尝试更改行
chat.server.Friends();
到:
chat.server.friends();
我猜生成的javascript在命名方面有java约定。这是我从这两种方法中可以看到的唯一区别。
答案 1 :(得分:2)
如@scheien所述,您需要使用小写首字母调用该方法。 (可选)您可以将集线器方法名称指定为详细here。
[HubMethodName("MyNewMethodName")]
public void Friends()
然后使用该新名称
调用服务器函数chat.server.MyNewMethodName();
答案 2 :(得分:0)
chat.client.onlineFriends = function (userLists) {
alert(userLists);
};
但...... userLists
在集线器上不存在:
Clients.CalleronlineFriends("myid");
这是一回事,另一件让我注意的事情是javascript部分不以大写字母开头
因此,您还必须将Friends
,Hello
,OnlineFriends
更改为friends
,hello
onlineFriends