recherche

Maison  >  Questions et réponses  >  le corps du texte

La connexion WebSocket à « ws://localhost:4000/graphql » a échoué :

<p>Je reçois maintenant cette erreur <em>Websocket Impossible de se connecter</em> côté client et côté serveur (comme indiqué dans l'image ci-dessous). Je n'utilise aucune autre configuration Websocket autre que celle spécifiée dans le client Apollo. Cela m'a dérouté pendant environ deux jours. Toute aide serait grandement appréciée. Si vous avez besoin de voir un code supplémentaire, faites-le-moi savoir. </p> <p>J'ai un client d'application <strong>Vue</strong> connecté au serveur <strong>graphql apollo</strong>. Le code de configuration d'apolloclient est donné ci-dessous.</p> <p> <pre class="snippet-code-js lang-js Prettyprint-override"><code>// Packages Apollo importer { ApolloClient } depuis "apollo-boost-upload" ; importer { WebSocketLink } depuis "apollo-link-ws" ; importer { HttpLink } depuis "apollo-link-http" ; importer { InMemoryCache } depuis "apollo-cache-inmemory" ; importer { split } depuis "apollo-link" ; importer {getMainDefinition} depuis "apollo-utilities" ; importer VueApollo depuis "vue-apollo" ; Vue.use(VueApollo); wsLink = nouveau WebSocketLink({ uri : "ws://localhost:4000/graphql", // utilise wss pour un point de terminaison sécurisé options : { reconnecter : vrai, }, }); lien const = divisé ( // fractionné en fonction du type d'opération ({ requête }) => { const définition = getMainDefinition(query); retour ( definition.kind === "OperationDefinition" && définition.opération === "abonnement" ); }, wsLink, httpLien ); // Implémentation du cache export const defaultClient = new ApolloClient ({ // uri : "http://localhost:4000/graphql", lien, cache : nouveau InMemoryCache(), options de récupération : { informations d'identification : "inclure", }, demande : (opération) => { // s'il n'y a pas de jeton dans le stockage local, ajoutez-le si (!localStorage.anaceptToken) { localStorage.setItem("anaceptToken", ""); } // L'opération ajoute le jeton à l'en-tête d'autorisation, qui est envoyé au backend opération.setContext({ en-têtes : { autorisation : "Bearer " + localStorage.getItem("anaceptToken"), }, }); }, onError : ({ graphQLErrors, networkError }) => { si (erreur réseau) { console.log("[Erreurréseau]",Erreurréseau); } si (graphQLErrors) { pour (erreur const de graphQLErrors) { console.dir (erreur); console.log(erreur); si ( error.name === "AuthenticationError" || error.message === "jwt a expiré" ) { // définit l'erreur d'authentification dans l'état store.commit("setError", erreur); // déconnexion de l'utilisateur pour effacer l'erreur magasin.dispatch("signUserOut"); } } } }, });</code></pre> </p> <p>vue 配置文件</p> <pre class="brush:php;toolbar:false;">const { définirConfig }= require("@vue/cli-service"); const NodePolyfillPlugin = require("node-polyfill-webpack-plugin"); module.exports = définirConfig({ Options du plugin : { Apollon : { activerMocks : vrai, activerEngine : vrai, }, }, transpileDépendances : ["vuetify"], chainWebpack : (config) => { config.performance.maxEntrypointSize(400000).maxAssetSize(400000); nouveau NodePolyfillPlugin(); }, });</pré>
P粉344355715P粉344355715459 Il y a quelques jours653

répondre à tous(1)je répondrai

  • P粉914731066

    P粉9147310662023-08-30 17:40:40

    Intéressant, essayez localhost 4004, ça devrait fonctionner

    répondre
    0
  • Annulerrépondre