c# websocket 传输实时数据到前端
时间: 2024-01-05 17:04:05 浏览: 131
要在C#中使用WebSocket传输实时数据到前端,你可以使用以下步骤:
1. 在C#中创建WebSocket服务器,使用System.Net.WebSockets命名空间。
2. 在WebSocket服务器中处理连接请求和消息。
3. 在C#中编写代码,将实时数据发送到WebSocket客户端。
4. 在前端中使用JavaScript创建WebSocket客户端,使用WebSocket API与C#服务器进行通信。
5. 在前端中编写代码,处理WebSocket服务器发送的实时数据。
以下是一个简单的示例代码,演示如何在C#中使用WebSocket传输实时数据到前端:
```csharp
using System;
using System.Net.WebSockets;
using System.Threading;
using System.Threading.Tasks;
namespace WebSocketServerExample
{
class Program
{
static async Task Main(string[] args)
{
var listener = new WebSocketListener();
await listener.StartAsync();
while (true)
{
var message = Console.ReadLine();
listener.Broadcast(message);
}
}
}
public class WebSocketListener
{
private WebSocket _socket;
private CancellationTokenSource _cancellationTokenSource;
public async Task StartAsync()
{
_socket = new WebSocket("ws://localhost:8080");
_cancellationTokenSource = new CancellationTokenSource();
await _socket.ConnectAsync(_cancellationTokenSource.Token);
var receiveTask = ReceiveMessagesAsync();
var sendTask = SendMessagesAsync();
await Task.WhenAny(receiveTask, sendTask);
}
private async Task ReceiveMessagesAsync()
{
while (!_cancellationTokenSource.IsCancellationRequested)
{
var buffer = new byte[1024];
var result = await _socket.ReceiveAsync(new ArraySegment<byte>(buffer), _cancellationTokenSource.Token);
if (result.MessageType == WebSocketMessageType.Close)
{
await _socket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, _cancellationTokenSource.Token);
_cancellationTokenSource.Cancel();
}
}
}
private async Task SendMessagesAsync()
{
while (!_cancellationTokenSource.IsCancellationRequested)
{
await Task.Delay(1000);
var message = DateTime.Now.Ticks.ToString();
await _socket.SendAsync(new ArraySegment<byte>(System.Text.Encoding.UTF8.GetBytes(message)), WebSocketMessageType.Text, true, _cancellationTokenSource.Token);
}
}
public async void Broadcast(string message)
{
await _socket.SendAsync(new ArraySegment<byte>(System.Text.Encoding.UTF8.GetBytes(message)), WebSocketMessageType.Text, true, _cancellationTokenSource.Token);
}
}
}
```
这个代码演示了如何创建一个WebSocket服务器,监听端口8080,并将接收到的消息广播给所有客户端。客户端可以使用JavaScript创建WebSocket对象,并与C#服务器进行通信。当服务器发送实时数据时,JavaScript代码会接收到这些数据,并在页面上显示它们。
阅读全文