legongju.com
我们一直在努力
2025-01-12 06:21 | 星期天

c# websocketserver怎样发送消息

在C#中,你可以使用System.Net.WebSockets命名空间中的WebSocket类来创建一个WebSocket服务器。以下是一个简单的示例,展示了如何创建一个WebSocket服务器并在接收到客户端连接时发送消息:

using System;
using System.Net.WebSockets;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;

namespace WebSocketServer
{
    public class WebSocketHandler
    {
        private readonly WebSocket _webSocket;

        public WebSocketHandler(WebSocket webSocket)
        {
            _webSocket = webSocket;
        }

        public async Task OnConnectedAsync()
        {
            // 接收客户端发送的消息
            var buffer = new byte[1024 * 4];
            WebSocketReceiveResult result;

            do
            {
                result = await _webSocket.ReceiveAsync(new ArraySegment(buffer), CancellationToken.None);
                var message = Encoding.UTF8.GetString(buffer, 0, result.Count);
                Console.WriteLine($"Received message: {message}");
            } while (!result.CloseStatus.HasValue);

            // 向客户端发送消息
            var responseMessage = "Hello from WebSocket server!";
            var responseBuffer = Encoding.UTF8.GetBytes(responseMessage);
            await _webSocket.SendAsync(new ArraySegment(responseBuffer), result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);
        }
    }

    public class Program
    {
        public static async Task Main(string[] args)
        {
            var builder = WebApplication.CreateBuilder(args);
            builder.Services.AddControllers();
            builder.Services.AddEndpointsApiExplorer();
            builder.Services.AddSwaggerGen();

            var app = builder.Build();
            app.UseHttpsRedirection();
            app.UseAuthorization();
            app.MapControllers();

            // 注册WebSocket路由
            app.Map("/ws", async (HttpContext context) =>
            {
                if (context.WebSockets.IsWebSocketRequest)
                {
                    var webSocket = await context.WebSockets.AcceptWebSocketAsync();
                    var webSocketHandler = new WebSocketHandler(webSocket);
                    await webSocketHandler.OnConnectedAsync();
                }
                else
                {
                    context.Response.StatusCode = StatusCodes.Status400BadRequest;
                    await context.Response.WriteAsync("This endpoint only supports WebSocket connections.");
                }
            });

            app.Run();
        }
    }
}

在这个示例中,我们创建了一个简单的HTTP服务器,监听/ws路径上的WebSocket连接。当客户端连接到服务器时,OnConnectedAsync方法会被调用。在这个方法中,我们首先接收客户端发送的消息,然后向客户端发送一条响应消息。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/48925.html

相关推荐

  • c#怎么引用类

    c#怎么引用类

    在C#中,要引用一个类,首先需要确保该类在当前项目或引用的程序集中。然后,可以使用using关键字将类所在的命名空间导入到当前文件中。接下来,就可以在代码中直...

  • c++爱心源代码怎么写

    c++爱心源代码怎么写

    在C++中,你可以使用ASCII字符来绘制一个简单的爱心形状。这里是一个示例代码:
    #include int main() { std::cout

  • c++ string的常用方法及其功能是什么

    c++ string的常用方法及其功能是什么

    C++中的string类包含了许多常用的方法,这些方法可以帮助我们完成各种字符串操作。以下是一些常用的string方法及其功能: length() 或 size(): 返回字符串的长度...

  • c++怎么读取一行字符串

    c++怎么读取一行字符串

    在C++中,你可以使用std::getline()函数从输入流(如std::cin)读取一行字符串
    #include
    #include int main() { std::string line; // 提示用户输入一...

  • c# websocketserver如何处理连接

    c# websocketserver如何处理连接

    在C#中,处理WebSocket连接通常需要使用System.Net.WebSockets命名空间中的WebSocket类。以下是一个简单的示例,展示了如何创建一个基本的WebSocket服务器来处理...

  • c# websocketserver有何优缺点

    c# websocketserver有何优缺点

    C# WebSocketServer 是一个基于 C# 语言开发的 WebSocket 服务器端组件,它允许客户端和服务器之间通过 WebSocket 协议进行实时通信。以下是 C# WebSocketServer...

  • c# websocketserver怎样运行

    c# websocketserver怎样运行

    要在C#中创建并运行一个WebSocket服务器,你可以使用System.Net.WebSockets命名空间中的WebSocket类。以下是一个简单的WebSocket服务器示例: 首先,确保你的项目...

  • c# webclient怎样避免错误

    c# webclient怎样避免错误

    在使用C#的WebClient类进行网络请求时,有时会遇到一些错误,如网络连接问题、超时、HTTP错误等。为了避免这些错误,可以采取以下措施: 使用try-catch语句捕获异...