私はsignalRを初めて使用します。signalRで簡単なアプリケーションを開発しています。要件は、signalRがクライアントへの現在の時刻を少し遅れて繰り返し更新する必要があることです。実行を開始している間、コードはサーバーの応答を一時的に取得します。何度も繰り返されることはありません。現在の時刻をクライアントに何度も更新するために、sameHubclassをコールバックする必要があります!
これが私のコードです:-
Javascriptクライアントコード:-
<body>
<div class="container">
<input type="hidden" id="name" />
</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 (name,current) {
var now = current;
console.log(current);
$('div.container').append('<p><strong>'+name+"="
+ now + '</strong></p>');
};
$("#name").val(prompt("Enter the UserName", ""));
$.connection.hub.start().done(function () {
chat.server.send($("#name").val());
});
});
</script>
</body>
HubClass:-
public class timeHub : Hub
{
public void send(string name)
{
while(true)
{
string current = DateTime.Now.ToString("HH:mm:ss:tt");
Clients.All.broadcastMessage(name,current);
Console.WriteLine(current);
Console.ReadLine();
System.Threading.Thread.Sleep(3000);
send(name);
}
}
}
MyOwinスタートアップクラス:-
[assembly: OwinStartup(typeof(Time.Startup))]
namespace Time
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
SignalRのJavascriptクライアントコードでHubClassのコールバック機能を追加するにはどうすればよいですか。
これがコールバック関数とtimedelayなしの私の現在の出力です:-
しかし、signalRと.netクライアントアプリケーションまたは正常に動作しています。ハブクラスの時間を遅らせ、同じハブクラスを定期的にコールバックする必要がありますか?
サーバー内の同じハブクラスを少し遅れてコールバックすることは可能ですか?そのために、ハブクラスでの時間遅延が追加されました。サーバーのハブクラスをコールバックします。機能しません。誰かがこれに対する解決策を教えてくれますか?
理想的には、現在の時刻でbroadcastMessageメソッドを呼び出すタイマーを使用することをお勧めします。send
ただし、ハブメソッドにはいくつかの問題があります。また、SignalRは呼び出しごとにハブクラスをインスタンス化し、状態は維持されません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加