当前位置:网站首页>Asp.Net Core6 WebSocket 简单案例
Asp.Net Core6 WebSocket 简单案例
2022-06-27 05:13:00 【天马3798】
一、Asp.Net Core6 后端,开启并绑定服务器端WebSocket
1. 启动文件启动绑定
//开启并绑定websocket
app.UseWebSockets();
app.Map("/wstest/one", con => {
con.UseWebSockets();
con.Use(async (ctx, next) => {
//创建监听websocket
WsTest ws = new WsTest();
await ws.DoWork(ctx);
await next.Invoke();
});
});
app.Run();2.封装监听响应
public class WsTest
{
//当前请求实例
WebSocket socket = null;
public async Task DoWork(HttpContext ctx)
{
socket = await ctx.WebSockets.AcceptWebSocketAsync();
//执行监听
await EchoLoop();
}
public async Task EchoLoop()
{
//创建缓存区
var buffer = new byte[1024];
var seg = new ArraySegment<byte>(buffer);
while (this.socket.State == WebSocketState.Open)
{
var incoming = await this.socket.ReceiveAsync(seg, CancellationToken.None);
//判断类型读取
if (incoming.MessageType == WebSocketMessageType.Text)
{
//incoming.Count 代表,请求内容字节数量
string userMessage = Encoding.UTF8.GetString(seg.Array, 0, incoming.Count);
//接收客户的字符串
userMessage = "You sent: " + userMessage + " at " +
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("服务端相应内容结束");
var outgoing = new ArraySegment<byte>(backInfo, 0, backInfo.Length);
await this.socket.SendAsync(outgoing, WebSocketMessageType.Text, true, CancellationToken.None);
}
}
}二、客户端连接并监听相应内容
1.html
<input id="Txt" type="text" name="name" value="" />
<button id="sendBtn">点击发送</button>2.js
//创建监听测试
var url = 'ws://' + location.host + '/wstest/one';
var socket = new WebSocket(url);
//创建监听
socket.onopen = function (e) {
console.info('连接成功');
}
socket.onclose = function (e) {
console.info('连接关闭');
}
socket.onmessage = function (e) {
var data = e.data;
console.info(data);
}
socket.onerror = function (e) {
console.info(e);
}
//按钮事件中发送
document.getElementById('sendBtn').onclick = function () {
var text = document.getElementById('Txt').value;
console.info(text);
//执行发送
socket.send(text);
}查看预览结果:

更多:
ASP.NET Core5.0 SignalR CORS 跨域处理
Asp.Net Core6 WebSocket绑定
ASP.NET Core SignalR.NET 客户端
边栏推荐
- Microservice system design -- API gateway service design
- Microservice system design -- microservice monitoring and system resource monitoring design
- 007 basics of C language: C operator
- Microservice system design -- distributed lock service design
- Web3还没实现,Web5乍然惊现!
- Epics record reference 5 -- array analog input recordarray analog input (AAI)
- Basic concepts of neo4j graph database
- 010 C语言基础:C函数
- 007 C语言基础:C运算符
- 1.5 use of CONDA
猜你喜欢

Microservice system design -- API gateway service design

微服务系统设计——消息缓存服务设计

Microservice system design -- message caching service design

neo4j图数据库基本概念

stm32读取IO高低电平状态

es6 0622三

What is BFC? What's the usage?

Zener diode zener diode sod123 package positive and negative distinction

Microservice system design -- Distributed timing service design

Ad22 Gerber files Click to open the Gerber step interface. Official solutions to problems
随机推荐
微服务系统设计——微服务监控与系统资源监控设计
Microservice system design -- distributed lock service design
stm32读取IO高低电平状态
three.js第一人称 相机前枪的跟随
021 basics of C language: recursion, variable parameters
019 C语言基础:C预处理
Niuke practice 101-c reasoning clown - bit operation + thinking
Microservice system design -- message caching service design
neo4j图数据库基本概念
013 C语言基础:C指针
STM32 reads IO high and low level status
2022-06-26: what does the following golang code output? A:true; B:false; C: Compilation error. package main import “fmt“ func main() { type
[nips 2017] pointnet++: deep feature learning of point set in metric space
Flink production problems (1.10)
Interview: what are the positioning methods in selenium? Which one do you use most?
【B站UP DR_CAN学习笔记】Kalman滤波1
轨道姿态常用编程缩写
How JQ gets the ID name of an element
Tsinghua University open source software mirror website
012 C language foundation: C array