vue+asp.net core webapi+Signalr 云服务器部署记录(.net 6)

  1. program.cs 添加signalr、添加跨域,暂时允许所有跨域,use cors,添加signalr端点
builder.Services.AddSignalR();
builder.Services.AddCors(options =>
{
    options.AddPolicy("cors",
        builder => builder
        .SetIsOriginAllowed(_=>true)
        .AllowAnyOrigin()
        .AllowAnyHeader()
        .AllowAnyMethod());
});
// ...

app.UseCors("cors");

app.UseEndpoints(endpoints => {
    endpoints.MapHub<ChatHub>("/ChatHub");
});

  1. ChatHub 代码:将接收到的消息发送给其他所有客户端,这里需要添加跨域特性
[EnableCors("cors")]
public class ChatHub : Hub
{
    [EnableCors("cors")]
    public async Task guang_bo(string msg)
    {
        await Clients.AllExcept(this.Context.ConnectionId).SendAsync("guang_bo", this.Context.ConnectionId + "\t" + msg + " \n");
    }
}
  1. 到这里,后端signalr添加、跨域、ChatHub已完成
  2. Vue代码添加 aspnet/signalr 库
  3. vue引入signalr
import * as signalR from "@aspnet/signalr";
  1. data中定义,mounted中signalr连接
	data()
	{
		 let isdebug = false;
	     if(isdebug)
	     {
	       url = "http://localhost:5189";
	     }
	     else
	     {
	       url = "http://www.xxx.cn:8088";
	     }
		return {
			base_url:url,
			connection:"",
		}
	},
	mounted(){
		// new signalr,地址指向后端路由,
		 this.$data.connection = new signalR.HubConnectionBuilder()
	    	.withUrl(`${this.$data.base_url}/ChatHub` , 
	      {
	            skipNegotiation: true,  		// 关键
	            transport: signalR.HttpTransportType.WebSockets		// 关键
	      }
	    )     //debug
	    .configureLogging(signalR.LogLevel.Error).build();	// 默认
	    
	     this.$data.connection.start();
		// 定义连接监听前端方法,方法名称为guang_bo,接收一个字符串
	    this.$data.connection.on("guang_bo", data => {
	        console.log(data);
	        this.$data.receiveMsg += data;
	      });
		}	
	```
7. 关键步骤,nginx配置文件
```nginx
# 前端反向代理		 
	server { 
		listen          80;   					# 前端端口                
		server_name     qmtdlt.cn;  			# 前端域名  

		location / { 
			root   html/dist;  					# 前端发布地址              
			index  index.html index.htm; 		# index文件,默认
			proxy_http_version 1.1; 			# signalr 配置必须
			proxy_set_header Upgrade $http_upgrade;		# signalr 配置必须                
			proxy_set_header Connection "upgrade";		# signalr 配置必须
		}
		
		location /api { 
			proxy_pass  http://www.qmtdlt.cn:8088/api/;  # 后端地址
		} 
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值