Здравствуйте, мой проект websocket работает, но где я могу отправить сообщение и проверить его?
Серверная программа.cs:
using System.Net;
using System.Net.WebSockets;
using System.Text;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.Map("/", async httpContext =>
{
if (httpContext.WebSockets.IsWebSocketRequest is false)
httpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
else
{
using var webSocket = await httpContext.WebSockets.AcceptWebSocketAsync();
while (true)
{
var data = Encoding.ASCII.GetBytes($"Data {DateTime.Now}");
await webSocket.SendAsync(data, WebSocketMessageType.Text, false, CancellationToken.None);
await Task.Delay(5000);
}
}
});
app.UseWebSockets();
app.Run();
Клиентская программа.cs:
using System.Net.WebSockets;
using System.Text;
using var webSockets = new ClientWebSocket();
await webSockets.ConnectAsync(new Uri("wss://localhost:7163"), CancellationToken.None);
var buffer = new byte[256];
while (webSockets.State == WebSocketState.Open)
{
var result = await webSockets.ReceiveAsync(buffer, CancellationToken.None);
if (result.MessageType == WebSocketMessageType.Close)
await webSockets.CloseAsync(WebSocketCloseStatus.NormalClosure, "Bağlantı Kesildi", CancellationToken.None);
else
Console.WriteLine(Encoding.ASCII.GetString(buffer, 0, result.Count));
}
Я не знал, куда отправить сообщение как-то.
Проект вебсокета работает. Куда я могу отправить сообщение и проверить его?
Спасибо. Это сработало для меня. Но как я могу отправлять сообщения конкретным клиентам, а не клиентам, которые подключаются. Например, я хочу выбрать одного из подключающихся клиентов и отправить только ему.
Вы можете отправлять сообщения по идентификатору клиента





Предоставленный вами код не является полным. Если вы хотите реализовать функцию отправки и получения информации через WebSocket, выполните следующие действия:
Создайте консольную программу C# (я использую консольную программу на основе .Net FrameWork), установите пакет Fleck nuget, код выглядит следующим образом:
namespace WebSocketConsole
{
public class Program
{
static void Main(string[] args)
{
FleckLog.Level = LogLevel.Debug;
var allSockets = new List<IWebSocketConnection>();
var server = new WebSocketServer("ws://0.0.0.0:7080");
server.Start(socket =>
{
socket.OnOpen = () =>
{
Console.WriteLine("The client connection is successful!");
allSockets.Add(socket);
Console.WriteLine("The current number of clients: " + allSockets.ToList().Count);
};
socket.OnClose = () =>
{
Console.WriteLine("The client is closed!");
allSockets.Remove(socket);
Console.WriteLine("The current number of clients: " + allSockets.ToList().Count);
};
// When a message is received
socket.OnMessage = message =>
{
Console.WriteLine(message);
allSockets.ToList().ForEach(s => s.Send(message));
};
});
// read input message
var input = Console.ReadLine();
//When the message is not "exit", enter an infinite loop
while (input != "exit")
{
//Traverse all socket clients and send messages to each client
foreach (var socket in allSockets.ToList())
{
socket.Send(input);
}
input = Console.ReadLine();
}
}
}
}
Создайте пустую программу C# Asp.Net Web, добавьте в нее html-файл, и код html-файла будет следующим:
<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8" />
<title></title>
</head>
<body>
<div>Send message:</div>
<input type = "text" id = "msgContent" />
<input type = "button" value = "Click me to send" onclick = "CHAT.chat()" />
<div>Accept message:</div>
<div id = "receiveMsg" style = "background-color: gainsboro;"></div>
<script type = "application/javascript">
window.CHAT = {
socket: null,
init: function() {
if (window. WebSocket) {
CHAT.socket = new WebSocket("ws://127.0.0.1:7080/ws");//websocket server address and port
CHAT.socket.onopen = function() {
console.info("Connection established successfully...");
},
CHAT.socket.onclose = function() {
console.info("Connection closed...");
},
CHAT.socket.onerror = function() {
console.info("An error occurred...");
},
CHAT.socket.onmessage = function(e) {
console.info("Received message: " + e.data);
var receiveMsg = document. getElementById("receiveMsg");
var html = receiveMsg. innerHTML;
receiveMsg.innerHTML = html + "<br/>" + e.data;
}
} else {
alert("The browser does not support the websocket protocol...");
}
},
chat: function() {
var msg = document. getElementById("msgContent");
CHAT.socket.send(msg.value);
}
};
CHAT.init();
</script>
Запустите консольную программу C#.
Щелкните правой кнопкой мыши «Просмотр в браузере» в html-файле пустой веб-программы Asp.Net.
Здравствуйте, если мой ответ вам полезен, вы можете отметить его, чтобы он помог большему количеству людей.