Forum

Need some help? Ask our community for its assistance!

You are not logged in.

#1 02-02-2018 21:13:56

jps2018
Membre
Registered: 18-01-2018
Posts: 5

Node.js et socket.io

Bonjour,

Je voudrais utiliser node.js et socket.io sur mon site alwaysdata.
Je débute avec node.js donc je me suis basé sur un tutorial de mise en place d'un chat (page html <-> nodes.js + socket.io). Après multiples paramétrages différents, je ne suis pas arrivé à faire fonctionner ce tutorial sur alwaysdata.
Je voudrais avoir votre avis et savoir si au final on peut utiliser socket.io ou pas sur un hébergement mutualisé alwaysdata.

J'ai paramétré un site "NodeJS"  :

- Adresse = **monDomaine**.alwaysdata.net/ws
            **monDomaine**.alwaysdata.net/socket.io
- Commande = node ~/chat/app.js
- Répertoire de travail = chat

Fichier app.js :

var app = require('express')(),
    server = require('http').createServer(app),
    io = require('socket.io').listen(server);

app.get('/ws', function (req, res) {
  res.sendfile('index.html');
})

io.on('connection', function(socket) {
	console.log('User connected');
	socket.on('message', function(msg){
		 io.emit('message', msg);
	});

	socket.on('disconnect', function () {
	  console.log('User disconnected');
	});
});

server.listen(process.env.ALWAYSDATA_HTTPD_PORT, process.env.ALWAYSDATA_HTTPD_IP, function () {
  console.log('App démarrée')
});

Fichier index.html :

<!doctype html>
<html>
  <head>
    <title>Socket.IO chat</title>
    <style>
      * { margin: 0; padding: 0; box-sizing: border-box; }
      body { font: 13px Helvetica, Arial; }
      form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; }
      form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; }
      form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; }
      #messages { list-style-type: none; margin: 0; padding: 0; }
      #messages li { padding: 5px 10px; }
      #messages li:nth-child(odd) { background: #eee; }
      #messages { margin-bottom: 40px }
    </style>
  </head>
  <body>
    <ul id="messages"></ul>
    <form action="">
      <input id="m" autocomplete="off" /><button>Send</button>
    </form>
    <script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
    <script src="https://code.jquery.com/jquery-1.11.1.js"></script>
    <script>
      $(function () {
        var socket = io.connect('https://**monDomaine**.alwaysdata.net/socket.io');
		//var socket = io();
        $('form').submit(function(){
          socket.emit('message', $('#m').val());
          $('#m').val('');
          return false;
        });
        socket.on('message', function(msg){
          $('#messages').append($('<li>').text(msg));
          window.scrollTo(0, document.body.scrollHeight);
        });
      });
    </script>
  </body>
</html>

J'ai essayé avec

var socket = io();

mais j'ai une erreur :

The requested URL /socket.io/ was not found on this server
https://**monDomaine**.alwaysdata.net/socket.io/?EIO=3&transport=polling&t=1516922027456-0

J'ai donc ajouté **monDomaine**.alwaysdata.net/socket.io dans le paramètre "Adresse" du site "Node.js"
Je n'ai plus d'erreur mais :
- j'ai l'impression d'avoir généré une boucle infinie -> multiples requêtes envoyées : Request URL:https://**monDomaine**.alwaysdata.net/socket.io/?EIO=3&transport=polling&t=1516922303690-951
- je n'ai pas d'envoi vers le serveur ( socket.emit ne semble pas invoqué )
- je n'ai pas d'envoi vers le client ( io.emit ne semble pas invoqué )

Pouvez-vous m'aider ? Où se trouve le problème ? Comment faire pour utiliser socket.io sur alwaysdata ?

Merci d'avance

Offline

#2 05-02-2018 14:45:48

@Héloïse
Staff
Registered: 03-03-2016
Posts: 379

Re: Node.js et socket.io

Bonjour,

Vous pouvez effectivement utiliser les sockets sur nos serveurs mutualisés.

Je vous invite à tout d'abord vérifier que votre application démarre bien (via Avancé > Processus par exemple).

Si ça l'est il faudra que vous mettiez en place des logs sur votre application. Enfin, si ces logs applicatifs ne sont pas suffisants vous pourrez faire une analyse de processus.

Offline

#3 16-08-2019 11:51:50

nicolas4
Membre
Registered: 09-06-2016
Posts: 3

Re: Node.js et socket.io

Je suis tombé sur ce post parce que j'ai eu le même problème.

Pour info, voici ce qui m'a permis de résoudre le problème: https://stackoverflow.com/questions/258 … bdirectory.

Donc pas besoin "d'ajouter **monDomaine**.alwaysdata.net/socket.io dans le paramètre "Adresse" du site "Node.js"", la seule chose à faire est de modifier le

var socket = io();

en

var socket = io.connect('http://**domainName**.alwaysdata.net', { path: "/subdirectory/socket.io" });

Offline

Board footer

Powered by FluxBB