signalr能连接websocket服务端吗

如题
前端vue项目 使用的是signalr

能否连接Websocket的服务端?

“Devil组”引证GPT后的撰写:

  • SignalR 是一个基于 ASP.NET 的实时通信框架,它提供了多种实时通信机制,包括 WebSocket、Server-Sent Events (SSE)、Long Polling 等等。因此,如果你的后端服务是使用 WebSocket 实现的,那么 SignalR 客户端是可以连接该 WebSocket 服务端的。

在 Vue 项目中使用 SignalR 客户端连接 WebSocket 服务端的方法与连接 SignalR 服务端基本相同,只是需要指定 WebSocket 的传输协议。下面是一个连接 WebSocket 服务端的示例代码:

import { HubConnectionBuilder, HttpTransportType } from '@microsoft/signalr';

const connection = new HubConnectionBuilder()
  .withUrl('http://localhost:5000/hub', {
    transport: HttpTransportType.WebSockets,
  })
  .build();

connection.start()
  .then(() => console.log('Connection started!'))
  .catch(error => console.error(error));


其中,HttpTransportType.WebSockets 参数指定了使用 WebSocket 传输协议进行通信,http://localhost:5000/hub 是 WebSocket 服务端的 URL。你需要将该 URL 修改为你的 WebSocket 服务端的地址。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/4646641
  • 这篇博客你也可以参考下:WebSocket跨域问题解决
  • 这篇博客也不错, 你可以看下WebSocket跨域问题解决
  • 除此之外, 这篇博客: WebSocket实现后端数据变化,通知前端实时更新数据中的 2、Vue中WebSocket对象的使用 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    <template>
      <el-button type="primary" @click="sendMessage">发送消息</el-button>
    </template>
    
    <script>
    import webSocket from '@/api/evgis/webSocket'
    export default {
        name:"WebSocketTest",
        data(){
            return{
                webSocketObject: null,
            }
        },
        created() {
            // webSocket.webSocketInit(process.env.VUE_APP_BASE_API.replace("http","ws")+"/evgis/todoStatus")
            webSocket.webSocketInit('ws://127.0.0.1:8088/websocket')	//初始化webSocket
            // 按需进行绑定回调函数
            webSocket.setOpenCallback(res=>{
                console.log("连接建立成功",res);
            })
            webSocket.setMessageCallback(res=>{	
                // 在此处进行数据刷新操作即可实现数据发生改变时实时更新数据
                console.log("接收到回信",res);
            })
            webSocket.setErrorCallback(res=>{
                console.log("连接异常",res);
            })
            webSocket.setCloseCallback(res=>{
                console.log("连接关闭",res);
            })
        },
        methods:{
            sendMessage(){
                // 数据发生改变时给WebSocket发送消息,让其进行广播操作
                webSocket.sendMessage();
            }
        }
    }
    </script>
    
    <style>
    </style>
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^