1. 創(chuàng)建類WebSocketTest:
using System.Net.WebSockets;
using System.Text;
namespace WebSocket.Demo
{
public class WebSocketTest
{
//當(dāng)前請求實例
System.Net.WebSockets.WebSocket socket =null;
public async Task DoWork(HttpContext ctx)
{
socket = await ctx.WebSockets.AcceptWebSocketAsync();
//執(zhí)行監(jiān)聽
await EchoLoop();
}
public async Task EchoLoop()
{
//創(chuàng)建緩存區(qū)
var buffer = new byte[1024];
var arraySeg = new ArraySegment<byte>(buffer);
while (this.socket.State == WebSocketState.Open)
{
var incoming = await this.socket.ReceiveAsync(arraySeg, CancellationToken.None);
//判斷類型讀取
if (incoming.MessageType == WebSocketMessageType.Text)
{
//incoming.Count 代表,請求內(nèi)容字節(jié)數(shù)量
string userMessage = Encoding.UTF8.GetString(arraySeg.Array, 0, incoming.Count);
//接收客戶端的字符串
userMessage = "客戶端信息: " + userMessage + " 。時間: " +
DateTime.Now.ToLongTimeString();
ArraySegment<byte> segResult = new ArraySegment<byte>(Encoding.UTF8.GetBytes(userMessage));
await socket.SendAsync(segResult, WebSocketMessageType.Text, true, CancellationToken.None);
}
else
{
}
byte[] backInfo = System.Text.UTF8Encoding.Default.GetBytes("服務(wù)端相應(yīng)內(nèi)容結(jié)束");
var outgoing = new ArraySegment<byte>(backInfo, 0, backInfo.Length);
await this.socket.SendAsync(outgoing, WebSocketMessageType.Text, true, CancellationToken.None);
}
}
}
}
2. 在program.cs中進(jìn)行綁定
/*創(chuàng)建一個WebSocket中間件,并將WebSocket請求路由到"/websocket/test"路徑上。在處理WebSocket請求時,通過WebSocketTest.DoWork方法來處理連接和消息*/
app.UseWebSockets();
app.Map("/websocket/test", con => //當(dāng)收到“/websocket/test”請求時,執(zhí)行以下代碼
{
con.UseWebSockets(); //中間件,啟用websocket支持
con.Use(async (ctx, next) => //處理websocket請求時,執(zhí)行以下邏輯
{
//創(chuàng)建監(jiān)聽websocket
WebSocketTest ws = new WebSocketTest();
await ws.DoWork(ctx);
await next.Invoke(); //執(zhí)行下一個中間件
});
});
3. 使用websocket在線工具模擬請求:文章來源:http://www.zghlxwxcb.cn/news/detail-771498.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-771498.html
到了這里,關(guān)于.Net6使用WebSocket與前端進(jìn)行通信的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!