我已开始使用this SignalR的基础教程及其正常工作。 作为我学习的下一步,我在服务器上添加了一个Hub,如下所示。我打算将服务器时间发送给客户。
public class ServerTimeHub : Hub
{
public void SendServerTime()
{
do
{
Thread.Sleep(1000);
Clients.All.BroadCastServerTime(DateTime.Now.ToString());
} while (true);
}
}
现在在客户端html中我在javascript中添加了这一行
var time = $.connection.serverTimeHub;
和$ .connection.hub.start()。done函数中的以下行。
time.server.sendServerTime();
所以整个java脚本函数如下所示。
<script type="text/javascript">
$(function () {
// Declare a proxy to reference the hub.
var chat = $.connection.chatHub;
// Create a function that the hub can call to broadcast messages.
chat.client.broadcastMessage = function (name, message) {
// Html encode display name and message.
var encodedName = $('<div />').text(name).html();
var encodedMsg = $('<div />').text(message).html();
// Add the message to the page.
$('#discussion').append('<li><strong>' + encodedName
+ '</strong>: ' + encodedMsg + '</li>');
};
// Get the user name and store it to prepend to messages.
$('#displayname').val(prompt('Enter your name:', ''));
// Set initial focus to message input box.
$('#message').focus();
var time = $.connection.serverTimeHub;
time.client.broadCastServerTime = function (currentTime) {
$('#TimeSpan').text(currentTime);
}
// Start the connection.
$.connection.hub.start().done(function () {
// THE FOLLOWING IS THE ADDITIONAL LINE
time.server.sendServerTime();
$('#sendmessage').click(function () {
// Call the Send method on the hub.
chat.server.send($('#displayname').val(), $('#message').val());
// Clear text box and reset focus for next comment.
$('#message').val('').focus();
});
});
});
</script>
我的问题是,两个集线器都没有被调用。只有一个人被召唤。如果我想要调用ChatHub,那么我不得不注释掉
time.server.sendServerTime();
在$ .connection.hub.start()。done函数内。
试图理解为什么没有调用两个方法而只调用一个方法。请帮忙。