C# WebSocketSharp 写一个加入房间,退出房间,房间内群发消息的详细代码
时间: 2023-12-12 20:26:10 浏览: 117
以下是一个简单的 C# WebSocketSharp 示例,演示如何实现加入房间,退出房间,房间内群发消息的功能:
```csharp
using System;
using WebSocketSharp;
using WebSocketSharp.Server;
public class Chat : WebSocketBehavior
{
private string _room;
protected override void OnMessage(MessageEventArgs e)
{
// 从客户端接收到消息后的处理逻辑
string message = e.Data;
// 如果是加入房间的消息,更新房间信息
if (message.StartsWith("/join"))
{
_room = message.Substring(6);
Send($"You joined room {_room}.");
}
// 如果是退出房间的消息,清空房间信息
else if (message.StartsWith("/leave"))
{
_room = null;
Send($"You left the room.");
}
// 如果是房间内的聊天消息,群发给房间内的所有人
else if (_room != null)
{
Sessions.Broadcast($"{ID}: {message}", () => { return Sessions[ID].Context.WebSocket == Context.WebSocket; });
}
}
}
public class ChatServer
{
private WebSocketServer _server;
public ChatServer(string url)
{
_server = new WebSocketServer(url);
_server.AddWebSocketService<Chat>("/chat"); // 注册 Chat 服务
}
public void Start()
{
_server.Start();
}
public void Stop()
{
_server.Stop();
}
}
```
使用示例:
```csharp
ChatServer server = new ChatServer("ws://localhost:8080");
server.Start();
Console.WriteLine("Server started. Press any key to stop.");
Console.ReadKey(true);
server.Stop();
```
客户端可以使用任何 WebSocket 客户端库连接到 `ws://localhost:8080/chat`,然后发送如下格式的消息:
- `/join room1`:加入 `room1` 房间
- `/leave`:退出当前房间
- `hello`:在当前房间内发送 `hello` 消息
注意,这只是一个示例代码,并不包含所有的错误处理和安全措施,仅供参考。
阅读全文