SignalR:如何在 Signalr 中自动将内容从服务器推送到客户端?
SignalR: How do i push the contents from server to client automatically in signalr?
我正在使用 signalR 创建一个 .net web 应用程序。我的要求是,当客户端开始托管时,服务器会自动将当前时间值递归地推送给客户端,并延迟一些时间。我写了 code.But signalR 无法自动将消息发送到客户端?
我想,signalR 需要来自客户端的一些输入。我知道每次信号器都希望通过 hub.is 来自客户端的输入无论如何都会在服务器中自动调用客户端?
顺便说一下,我写的 code.is 它正确吗?
这是我的 HUB:-
public class timeHub : Hub
{
public void Send()
{
while(true)
{
var current = DateTime.Now.ToString("HH:mm:ss:tt");
Clients.All.broadcastMessage(current);
Console.WriteLine(current);
Console.ReadLine();
System.Threading.Thread.Sleep(5000);
}
}
}
我的 Owin 启动 Class:-
[assembly: OwinStartup(typeof(Time.Startup))]
namespace Time
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
我的客户端javascript代码是:-
<div class="container">
</div>
<script src="Scripts/jquery-1.6.4.min.js"></script>
<script src="Scripts/jquery.signalR-2.2.1.min.js"></script>
<script src="signalr/hubs"></script>
<script type="text/javascript">
$(function () {
var chat = $.connection.timeHub;
chat.client.broadcastMessage = function (current) {
var now = current;
console.log(current);
$('div.container').append('<p><strong>'
+ now + '</strong></p>');
};
$.connection.hub.start().done(function () {
chat.server.send();
});
});
</script>
如何在客户端不调用 signalr 的情况下自动将内容从服务器推送到客户端?
谁能给我提供解决这个问题的方法?
我看到的是您的代码没有任何内容调用您的 timeHub:Send() 方法。
您已经定义了一个集线器并定义了一个无限循环的 Send 函数,但是看起来好像您忘记启动 Send() 泵了。
你需要打电话给它!请记住,由于您的 Send() 函数永远不会 return,任何调用 Send() 的线程都将被阻止。
我建议启动一个任务,这样您的主线程就不会被对 Send() 的初始调用阻塞。
祝你好运!
我正在使用 signalR 创建一个 .net web 应用程序。我的要求是,当客户端开始托管时,服务器会自动将当前时间值递归地推送给客户端,并延迟一些时间。我写了 code.But signalR 无法自动将消息发送到客户端?
我想,signalR 需要来自客户端的一些输入。我知道每次信号器都希望通过 hub.is 来自客户端的输入无论如何都会在服务器中自动调用客户端?
顺便说一下,我写的 code.is 它正确吗?
这是我的 HUB:-
public class timeHub : Hub
{
public void Send()
{
while(true)
{
var current = DateTime.Now.ToString("HH:mm:ss:tt");
Clients.All.broadcastMessage(current);
Console.WriteLine(current);
Console.ReadLine();
System.Threading.Thread.Sleep(5000);
}
}
}
我的 Owin 启动 Class:-
[assembly: OwinStartup(typeof(Time.Startup))]
namespace Time
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
我的客户端javascript代码是:-
<div class="container">
</div>
<script src="Scripts/jquery-1.6.4.min.js"></script>
<script src="Scripts/jquery.signalR-2.2.1.min.js"></script>
<script src="signalr/hubs"></script>
<script type="text/javascript">
$(function () {
var chat = $.connection.timeHub;
chat.client.broadcastMessage = function (current) {
var now = current;
console.log(current);
$('div.container').append('<p><strong>'
+ now + '</strong></p>');
};
$.connection.hub.start().done(function () {
chat.server.send();
});
});
</script>
如何在客户端不调用 signalr 的情况下自动将内容从服务器推送到客户端?
谁能给我提供解决这个问题的方法?
我看到的是您的代码没有任何内容调用您的 timeHub:Send() 方法。
您已经定义了一个集线器并定义了一个无限循环的 Send 函数,但是看起来好像您忘记启动 Send() 泵了。
你需要打电话给它!请记住,由于您的 Send() 函数永远不会 return,任何调用 Send() 的线程都将被阻止。
我建议启动一个任务,这样您的主线程就不会被对 Send() 的初始调用阻塞。
祝你好运!