2014-05-21 2 views
1

J'ai une page qui ouvre une connexion websocket au serveur. Le serveur websocket est ws: //127.0.0.1: 5000/ws en cours de développement et ws: //www.mymachine.com/ws lorsqu'il est déployé en production. Y at-il une main courte pour cela, donc je ne dois pas réécrire cet URI manuellement from 127.0.0.1:5000 à www.mymachine.com quand je déploie? J'ai essayé ws://ws mais cela ne fonctionne pas. J'essaye d'obtenir le même comportement qu'une URL normale où vous pouvez employer /index et il ira à 127.0.0.1:5000/index ou www.mymachine.com/index selon où il s'exécute.Comment spécifier l'hôte pour une connexion websocket?

Répondre

2

J'ai eu un problème similaire. J'ai résolu en utilisant:

var uri= window.location.host + window.location.pathname + 'ws' 
    if (window.location.protocol === 'http:') { 
    mysocket.connect('ws://' + uri); 
    } else { 
    mysocket.connect('wss://' +uri); 
    } 
0

En plus de 1 variable simple dans la partie supérieure de votre (initialization-) script, vous pouvez regarder dans la référence File API - A URL for Blob and File:

This specification defines a scheme with URLs of the sort: 
blob:550e8400-e29b-41d4-a716-446655440000#aboutABBA. 

Ceux-ci sont stockés dans un URL store et les navigateurs devraient même avoir leurs propres mini-HTTP -server à bord afin que l'on puisse utiliser ces URL dans css, img src et même XMLHttpRequest. Votre script d'initialisation utilisera ensuite un if/else pour construire votre objet-url et le placer dans le magasin.
Un peu plus d'informations est dans this answer. (En outre, la rétrocompatibilité n'est pas votre problème lors de l'utilisation des prises Web.)

Espérons que cela vous donne une idée.

Questions connexes