Comment connecter deux node.js les serveurs avec les websockets?
Voici mon problème:
J'ai Un serveur, l'exécution de node.js et à l'aide d'une douille.io pour communiquer avec les clients (navigateurs web). Tout cela est en cours d'exécution fine et dandy.
Cependant, maintenant que j'ai le serveur B, qui doit également se connecter à Un serveur à travers les websockets, j'ai frappé un mur. Aucun des node.js websocket clients que j'ai trouvé ne fonctionne pas avec le socket.io sur le serveur A.
Donc, c'est le cas, je suis cherchant pour:
.--------. .----------. .----------.
| CLIENT | <--> | SERVER A | <--> | SERVER B |
'--------' '----------' '----------'
Client-serveur, Une connexion se fait par le biais de la prise.io
Maintenant, le Serveur B (exécution node.js) doit se connecter à Un serveur via websocket (afin de passer par le port 80). Mais...
Même l'exemple de code dans le support.io-module client ne fonctionne pas... :/
//Connect to server
var socket = new io.Socket('localhost', {port: 8080});
socket.connect();
//Add a connect listener
socket.on('connect', function(socket) {
console.log('Connected.');
});
Le code passe sans erreurs et la fin de l'exécution après quelques secondes.
Mise à jour: exemples de Code
Serveur (qui fonctionne très bien) ressemble à ceci:
//Load requirements
var http = require('http'),
io = require('socket.io');
//Create server & socket
var server = http.createServer(function(req, res){
//Send HTML headers and message
res.writeHead(404, {'Content-Type': 'text/html'});
res.end('<h1>Aw, snap! 404</h1>');
});
server.listen(8080);
io = io.listen(server);
//Add a connect listener
io.sockets.on('connection', function(socket) {
console.log('Client connected.');
//Disconnect listener
socket.on('disconnect', function() {
console.log('Client disconnected.');
});
});
Client ressemble à ceci
console.log('1');
//Connect to server
var io = require('socket.io-client')
var socket = new io.Socket('localhost', {port: 8080});
socket.connect();
console.log('2');
//Add a connect listener
socket.on('connect', function(socket) {
console.log('Connected!');
});
console.log('3');
1, 2 et 3 imprime très bien, pas d'erreurs, et quelques secondes plus tard, le processus s'interrompt
Aussi, le serveur A ne pas afficher quoi que ce soit dans le journal, même si j'ai de la prise.io journalisation réglé sur "tout".
- Avez-vous définitivement un websockets client ou vous pouvez simplement utiliser le bon vieux sockets?
the node.js websocket clients I've found
lesquels?- J'ai besoin d'au moins émuler les websockets car j'ai besoin de vous connecter au même serveur.
- J'ai essayé de socket.io-client, ws, websocket-nœud
- socket.io-client travaillé pour moi et les autres; je pense que vous devez poster un [non]exemple qui illustre vos questions. Aussi, essayez d'ajouter des processus.sur('UncaughtException') ou des coupes le long de la route; "sans erreur" signifie "n'avait pas l'air assez dur" : )
- L'Ofc j'ai UncaughtException là, donc je ne pense pas que résout rien, puisque, comme je l'ai dit, je n'ai pas les erreurs (ni exceptions)... j'ai aussi beaucoup de la console.journal, et ceux qui racontent la même histoire. De Plus, j'ai été regarder cette seule question 6 heures déjà je pense donc que j'ai regardé assez dur, même si je n'obtiens pas d'erreurs.
Vous devez vous connecter pour publier un commentaire.
S'avère que j'ai été en utilisant des exemples anciens, pour quelque raison, même si je triple vérifié. Eh bien, doh.
Aussi, il s'est avéré que la prise de courant.io-client est cassé sur le dernier Nœud (6.x.x). Réussi à trouver une mise à jour à partir de github pour elle, remplacé les fichiers et voilà, tout fonctionne!
Modifier: Malheureusement, je n'ai pas enregistrer tous les liens vers des exemples, mais rapidement après l'écrémage par le code, il semble que les seules modifications ont été pour le code client, qui ressemble maintenant à ceci:
Pour les futures personnes:
Voici 2 très simple
Node.js
les applications qui utilisent socket.io pour vous connecter, envoyer et recevoir des messages entre les uns des autres.Package requis est:
Node-App-1 server.js:
Node-App-2 client.js:
Voici un extrait de code que j'ai écrit, c'est à l'aide d'une douille.io 1.0.6 et de la prise.io-client 1.0.6. Le cas est le suivant:
Serveur (Socket.io Client) <---> Serveur B (Socket.io Server)
Le Serveur B (Serveur):
Serveur (Client):
Si je suis en utilisant localhost:8080 uniquement sur le client serveur, il ne se connecte pas.