水库api websocket api

问题描述 投票:0回答:1

我正在尝试订阅reservoir websocket api https://docs.reservoir.tools/reference/websockets并且我创建了一个自定义反应钩子来订阅和取消订阅某些事件

import {useCallback,useEffect,useState} from "react";

const API_KEY =  process.env.NEXT_PUBLIC_RESERVOIR_API_KEY ?? ''
const useReservoirWebSocket = () => {

    const [socket,setSocket] = useState<WebSocket|null>(null)

    useEffect(() => {

        const newSocket =  new WebSocket(`wss://ws.ws-sepolia.reservoir.tools`);

        newSocket.onopen = () => {
            console.log('Socket connected')
            setSocket(newSocket);

            newSocket.onmessage = (event) => {
                console.log('Message received: ', event.data);
            };
        }




        newSocket.onerror = (error) => {
            console.log('Connection error', error)
        }

        newSocket.onclose = () => {
            setSocket(null)
        }

        return () => {
            newSocket.close();
        }

    },[])


    const subscribe = useCallback((event:string, payload={}) => {
        if(socket) {
            socket?.send(JSON.stringify({
                type:'subscribe',
                event,
                ...payload
            }))
        }
    },[socket])

    const unsubscribe = useCallback((event:string,payload={}) => {
        if(socket) {
            socket?.send(JSON.stringify({type:'unsubscribe',event,...payload}))
        }
    },[socket])


    return {subscribe, unsubscribe, socket}

}

export default  useReservoirWebSocket

但是连接永远无法通过。

任何提示将不胜感激。

blockchain web3js nft reservoir-api reservoir-tools
1个回答
0
投票

您遇到的错误“与 'wss://ws.ws-sepolia.reservoir.tools' 的 WebSocket 连接失败”表示与 WebSocket 服务器建立连接时出现问题。

此错误的原因之一可能是 WebSocket URL 不正确。从文档中我们可以看到,在创建 WebSocket 实例时您需要将 API_KEY 作为连接 url 中的查询参数传递

const newSocket =  new WebSocket(`wss://ws.ws-sepolia.reservoir.tools?api_key=${API_KEY}`);

在给定的代码中,您没有在连接 URL 中提供 API_KEY。这可能是错误的原因。现在尝试使用上述语法创建 websocket 实例并检查它是否有效。

© www.soinside.com 2019 - 2024. All rights reserved.