首页 新闻 会员 周边 捐助

有signalr大神吗给看个东西

1
悬赏园豆:80 [已解决问题] 解决于 2024-10-15 10:13

服务端

builder.Services.AddSignalR();

app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapHub<GraphGenerationHub>("/file");
});

public class GraphGenerationHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}

}
注入
private readonly IHubContext<GraphGenerationHub> _hubContext;

public DemoController(SqlSugarClient _db,IHubContext<GraphGenerationHub> hubContext)
{
db = _db;
_hubContext = hubContext;
}
发消息
await _hubContext.Clients.All.SendAsync("ReceiveMessage", siz+"%");

前端
<script src="https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/3.1.7/signalr.min.js"></script>
<script>
var messages = [];
// 创建 SignalR 连接
var connection = new signalR.HubConnectionBuilder()
.withUrl("http://localhost:8081/file")
.build();

    // 注册事件处理程序
    connection.on("messageReceived", function (message) {
        console.log(message);
    });

    // 启动连接
    connection.start()
        .then(function () {
            console.log("SignalR connection started.");
        })
        .catch(function (err) {
            console.error(err.toString());
        });

弄得比较简单 但是就是不通

问题补充:

http://localhost:8081/file/negotiate?negotiateVersion=1 前端页面一打开就报这个跨域 我也配置跨域啥的 而且这个都没有对应的路由
<script src="https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/3.1.7/signalr.min.js"></script> 这个引用也不行 可是能打开
我都提取放到文件里还报这个

缘—的主页 缘— | 初学一级 | 园豆:156
提问于:2024-09-27 15:08
< >
分享
最佳答案
0

endpoints.MapHub<GraphGenerationHub>("/GraphGenerationHub").RequireCors(t => t.WithOrigins(new string[] { "http://localhost:8080" }).AllowAnyMethod().AllowAnyHeader().AllowCredentials()); 配置的时候加

缘— | 初学一级 |园豆:156 | 2024-10-15 10:05

前端也得哦配置好

缘— | 园豆:156 (初学一级) | 2024-10-15 10:14
其他回答(6)
0
F12看看浏览器里报什么错
收获园豆:11
顾星河 | 园豆:7273 (大侠五级) | 2024-09-27 16:01

支持(0) 反对(0) 缘— | 园豆:156 (初学一级) | 2024-09-27 16:20
0

巧了,我们也用的ABP的Signalr,等我下次上班我给你找找

收获园豆:12
echo_lovely | 园豆:1507 (小虾三级) | 2024-09-27 16:29

我没用abp 就简单的在本地做了个demo 接口没问题 就Signalr报错

支持(0) 反对(0) 缘— | 园豆:156 (初学一级) | 2024-09-27 16:30

http://localhost:8081/file/negotiate?negotiateVersion=1
这个地址是signalr的协议协商链接,前后端在通信前会通过该连接协商协议。然后才开始正式通信。

支持(0) 反对(0) echo_lovely | 园豆:1507 (小虾三级) | 2024-09-27 16:36

@echo_lovely:
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapHub<GraphGenerationHub>("/file");
}); 这定义的吧

支持(0) 反对(0) 缘— | 园豆:156 (初学一级) | 2024-09-27 16:50

@echo_lovely: 为什么会跨域呢

支持(0) 反对(0) 缘— | 园豆:156 (初学一级) | 2024-09-27 16:51

@缘—: 这个8081你配置了吗?appsettings.json里配置,前端,后端,跨域

支持(0) 反对(0) echo_lovely | 园豆:1507 (小虾三级) | 2024-09-27 17:09

@echo_lovely: 我配置的所有 都允许

支持(0) 反对(0) 缘— | 园豆:156 (初学一级) | 2024-09-27 17:16

@echo_lovely:

支持(0) 反对(0) 缘— | 园豆:156 (初学一级) | 2024-09-27 17:17
0

我看F12提示发起请求的域是'null', 你是不是打开的本地html才跨域的..把网页也放服务器,通过localhost打开网页试试看呢

收获园豆:13
www378660084 | 园豆:1025 (小虾三级) | 2024-09-28 16:23

我开启 httpserver

支持(0) 反对(0) 缘— | 园豆:156 (初学一级) | 2024-09-29 08:53

支持(0) 反对(0) 缘— | 园豆:156 (初学一级) | 2024-09-29 08:56

iis是80811

支持(0) 反对(0) 缘— | 园豆:156 (初学一级) | 2024-09-29 08:56
0
收获园豆:14
MrNice | 园豆:3468 (老鸟四级) | 2024-09-29 13:59

我又配置了个策略 还是不行

支持(0) 反对(0) 缘— | 园豆:156 (初学一级) | 2024-09-29 15:07

支持(0) 反对(0) 缘— | 园豆:156 (初学一级) | 2024-09-29 15:08

上传没问题 这是实时返回不了 报凑

支持(0) 反对(0) 缘— | 园豆:156 (初学一级) | 2024-09-29 15:10

@缘—:
两处标记,看看是不是都在

支持(0) 反对(0) MrNice | 园豆:3468 (老鸟四级) | 2024-09-29 15:46

@MrNice:

支持(0) 反对(0) 缘— | 园豆:156 (初学一级) | 2024-09-29 16:14

@MrNice:

支持(0) 反对(0) 缘— | 园豆:156 (初学一级) | 2024-09-29 16:15
0

https://gitee.com/Whatarey/WebSocket
看看,这个可以demo可以跑

收获园豆:15
永远跟党走i | 园豆:1540 (小虾三级) | 2024-09-30 17:07
0

是不是要在Hub上加上跨域的注解属性:EnableCors("allcore"),光是在接口上配置的跨域不会在Hub上生效?

收获园豆:15
HelloLLLLL | 园豆:453 (菜鸟二级) | 2024-10-08 13:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册