当前位置: 首页 > wzjs >正文

湘潭做网站 磐石网络网站怎么做子网页

湘潭做网站 磐石网络,网站怎么做子网页,怎么提高网站的流量,ui网页设计课程.NET 8 API 实现websocket,并在前端angular实现调用。 后端:.NET 8 WebSocket API 实现 在 .NET 8 中,可以通过 Microsoft.AspNetCore.WebSockets 提供的支持来实现 WebSocket 功能。以下是创建一个简单的 WebSocket 控制器的步骤。 安装必…

.NET 8 API 实现websocket,并在前端angular实现调用。

后端:.NET 8 WebSocket API 实现

在 .NET 8 中,可以通过 Microsoft.AspNetCore.WebSockets 提供的支持来实现 WebSocket 功能。以下是创建一个简单的 WebSocket 控制器的步骤。

安装必要的 NuGet 包
需要确保项目已启用 WebSocket 支持。如果尚未配置,请在项目的依赖项中添加以下包:

dotnet add package Microsoft.AspNetCore.WebSockets

配置中间件支持 WebSocket
在 Program.cs 文件中注册并启用 WebSocket 中间件:

using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;var builder = WebApplication.CreateBuilder(args);// 添加服务到容器
builder.Services.AddHttpContextAccessor();
builder.Services.AddControllers();var app = builder.Build();app.Use(async (context, next) =>
{if (context.Request.Path == "/ws") // 设置 WebSocket 终结点路径{if (context.WebSockets.IsWebSocketRequest){using var webSocket = await context.WebSockets.AcceptWebSocketAsync();await HandleWebSocketConnection(webSocket);}else{context.Response.StatusCode = StatusCodes.Status400BadRequest;}}else{await next(context);}
});app.MapControllers();
app.Run();static async Task HandleWebSocketConnection(System.Net.WebSockets.WebSocket socket)
{var buffer = new byte[1024 * 4];WebSocketReceiveResult result = await socket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);while (!result.CloseStatus.HasValue){Console.WriteLine($"Received message: {System.Text.Encoding.UTF8.GetString(buffer)}");await socket.SendAsync(new ArraySegment<byte>(buffer, 0, result.Count), result.MessageType, result.EndOfMessage, CancellationToken.None);result = await socket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);}await socket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);
}

上述代码实现了基本的 WebSocket 连接逻辑5。它监听 /ws 路径上的请求,并允许客户端通过 WebSocket 协议与其交互。

前端:Angular WebSocket 服务实现

为了在前端调用后端的 WebSocket 接口,可以基于前面提到的 Angular WebSocket 服务模板进行扩展。

创建 WebSocket 服务
创建一个新的服务文件 websocket.service.ts,用于管理 WebSocket 连接和消息传递。

import { Injectable } from '@angular/core';
import { Observable, Subject } from 'rxjs';@Injectable({providedIn: 'root'
})
export class WebsocketService {private socket: WebSocket | null = null;private subject$: Subject<string> = new Subject<string>();constructor() {}public connect(url: string): void {this.socket?.close();this.subject$ = new Subject<string>();this.socket = new WebSocket(url);this.socket.onopen = () => {console.log('WebSocket connection established');};this.socket.onerror = (error) => {console.error('WebSocket error:', error);};this.socket.onmessage = (event) => {this.subject$.next(event.data);};this.socket.onclose = () => {console.warn('WebSocket connection closed');this.subject$.complete();};}public sendMessage(message: string): void {if (this.socket && this.socket.readyState === WebSocket.OPEN) {this.socket.send(message);}}public getMessages(): Observable<string> {return this.subject$.asObservable();}public close(): void {if (this.socket) {this.socket.close();}}
}

此服务提供了连接、发送消息以及接收消息的功能6。

组件中使用 WebSocket 服务
下面是一个简单示例,展示如何在 Angular 组件中初始化 WebSocket 并收发消息。

import { Component, OnInit, OnDestroy } from '@angular/core';
import { WebsocketService } from './websocket.service';@Component({selector: 'app-root',template: `<h1>WebSocket Example</h1><button (click)="sendMessage()">Send Message</button><ul><li *ngFor="let msg of messages">{{msg}}</li></ul>`,styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit, OnDestroy {messages: string[] = [];constructor(private wsService: WebsocketService) {}ngOnInit(): void {this.wsService.connect('ws://localhost:5000/ws'); // 替换为实际的 URLthis.wsService.getMessages().subscribe((msg) => {this.messages.push(msg);});}ngOnDestroy(): void {this.wsService.close();}sendMessage(): void {this.wsService.sendMessage('Hello from client!');}
}

以上代码展示了如何启动 WebSocket 连接,在按钮点击时向服务器发送消息,并实时更新页面显示收到的消息列表7。

数据流说明

整个流程涉及以下几个部分的数据流动:

客户端发起 WebSocket 请求至指定终结点。
服务器接受请求并建立双向通信通道。
双方可通过此通道自由交换 JSON 字符串或其他二进制数据形式的信息8。


文章转载自:

http://fB28Df0h.qxmpp.cn
http://GC5ibo1I.qxmpp.cn
http://Agmnl48A.qxmpp.cn
http://8hgkmpR0.qxmpp.cn
http://SEJjnSEM.qxmpp.cn
http://6VE0n8tV.qxmpp.cn
http://wC7Suxfq.qxmpp.cn
http://6nwpsUyT.qxmpp.cn
http://5grHoecI.qxmpp.cn
http://F56abUZc.qxmpp.cn
http://MpwfFi4c.qxmpp.cn
http://e2v3PrYl.qxmpp.cn
http://hFGxPyWh.qxmpp.cn
http://wpbl37Be.qxmpp.cn
http://8nw0YDCq.qxmpp.cn
http://tLO0EDSk.qxmpp.cn
http://iiz0ToUt.qxmpp.cn
http://DWHeoEl5.qxmpp.cn
http://WvN4vQsE.qxmpp.cn
http://kzCDXXdd.qxmpp.cn
http://dFSTCH6w.qxmpp.cn
http://q9Lr4Nn8.qxmpp.cn
http://Sg02VMud.qxmpp.cn
http://5xa2WewP.qxmpp.cn
http://1T0VbGWe.qxmpp.cn
http://IR58LT7y.qxmpp.cn
http://NWbbePNz.qxmpp.cn
http://GDK1ID1i.qxmpp.cn
http://XAbb2wd3.qxmpp.cn
http://JT5HRcpK.qxmpp.cn
http://www.dtcms.com/wzjs/643735.html

相关文章:

  • 设计坞网站官方下载哪里有做设备的
  • 易网网站河北邯郸手机网站建设
  • 鞍山一般做一个网站需要多少钱装饰公司logo图标图片
  • 网站建设功能报价单做个电商网站和app
  • 商务网站要怎么设计石家庄做网站排名公司
  • 大型网站要多少钱中文域名网站有哪些
  • 做编程的 网站有哪些方面app定制开发大概多少钱
  • 项目宣传网站模板企业建设营销网站的目的是什么
  • 广安哪里有做网站的公司查询网站备案进度查询
  • 荆州 网站建设书店网站建设网站栏目结构
  • 广州 网站建设公司兰州市规划建设局网站
  • 站长统计app网站设计师接单赚钱平台
  • 食品行业网站开发dw网站建设的数据库
  • 江西网站建设公司电话怎么提高关键词搜索权重
  • 网站开发需要2个月吗58同城做网站要钱吗
  • 网站建设和运营的成本是多少钱2020 惠州seo服务
  • cad二次开发网站快站模板
  • 大学网站建设多少钱宁波做网站gs
  • 安徽湖滨建设集团网站中国电信视频app下载
  • 微信的公众平台网站开发中南集团中南建设网站
  • 南宁网站制作价格网络服务有哪些与影响
  • asp网站设计代做电商平台有哪些
  • 网站做app有什么意义招聘网站设计方案
  • 合肥的电商网站设计网站建设搭建运营
  • 甘肃cms建站系统哪家好如何制作网页设计首页
  • 网站建设服务包括什么百度 seo排名查询
  • 旅游网站 分析做挂网站
  • wordpress调用图像描述搜索引擎优化是指什么
  • 阿里云网站建设模板百度指数有三个功能模块
  • 南江县规划和建设局网站如何提高网站首页权重