gpt4 book ai didi

c# - 使用 signalR 和 C# 每秒向客户端发送消息

转载 作者:太空狗 更新时间:2023-10-30 01:16:07 25 4
gpt4 key购买 nike

我想向服务器发送某种计时器给所有连接的客户端。我能够在单击按钮时执行此操作。但我真正需要的是每秒自动发送一次这个计时器。

HTML

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Signalr Chat Messenger</title>
<script src="Scripts/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="Scripts/jquery.signalR-1.0.0-rc1.js" type="text/javascript"></script>
<script src="signalr/hubs" type="text/javascript"></script>
</head>
<body>
<form id="form1" runat="server">

<script type="text/javascript">
$(function () {

var IWannaChat = $.connection.myChatHub;

IWannaChat.client.addMessage = function (message) {
$('#listMessages').append('<li>' + message + '</li>');
};

IWannaChat.client.addTest = function (timer) {
$('#lblTimer').text(timer);
};

$("#SendMessage").click(function () {
IWannaChat.server.send($('#txtMessage').val());
});

$.connection.hub.start();

});
</script>

<div>
<input type="text" id="txtMessage" />
<input type="button" id="SendMessage" value="broadcast" /><asp:Label ID="lblTimer" runat="server" Text="timer"></asp:Label>
&nbsp;<ul id="listMessages">
</ul>
</div>
</form>
</body>
</html>

这是我的HUB

using System;
using Microsoft.AspNet.SignalR.Hubs;
using System.Threading;

namespace SignalRChat
{
[HubName("myChatHub")]
public class LetsChat : Hub
{
DateTime dateTime2 = DateTime.Now;
string dateTime1 = "11.04.2016 15:49:00";




public void send(string message)
{
//Thread.Sleep(1000);
var diffInSeconds = (Convert.ToDateTime(dateTime1) - dateTime2).TotalSeconds;

Clients.All.addMessage(message);
Clients.All.addTest(diffInSeconds.ToString());
//Clients.All.addTest(dateTime1.ToString());
}


}
}

最佳答案

您可以使用 System.Timers.Timer 来做到这一点:

public class LetsChat : Hub
{
private static readonly System.Timers.Timer _timer = new System.Timers.Timer();

static LetsChat()
{
_timer.Interval = 1000;
_timer.Elapsed += TimerElapsed;
_timer.Start();
}

static void TimerElapsed(object sender, System.Timers.ElapsedEventArgs e)
{
var hub = GlobalHost.ConnectionManager.GetHubContext<LetsChat>();

var diffInSeconds = (Convert.ToDateTime(dateTime1) - dateTime2).TotalSeconds;

hub.Clients.All.addMessage("Message");
hub.Clients.All.addTest(diffInSeconds.ToString());
}

public void send(string message)
{
//Thread.Sleep(1000);
var diffInSeconds = (Convert.ToDateTime(dateTime1) - dateTime2).TotalSeconds;

Clients.All.addMessage(message);
Clients.All.addTest(diffInSeconds.ToString());
//Clients.All.addTest(dateTime1.ToString());
}

}

关于c# - 使用 signalR 和 C# 每秒向客户端发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36547382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com