Je suis en train de réaliser un site responsive contenant des Websockets (socket-io). Ces sockets me servent à gérer un chat. Je travail sur serveur local avec NodeJS.
Je suis rentré en phase de tests. J'ai essayé de faire fonctionner mes websockets avec plusieurs pages d'ouvertes sur mon poste principal et aussi depuis un second poste. Tout fonctionne très bien . Malheureusement, plus rien ne fonctionne quand j'arrive sur un support tactile type smartphone ou tablette . Les websockets bloquent tous. Impossible interagir avec le site. Si par exemple une page contient une websocket comme ci-dessous elle en fonctionne pas :
//Send to server that a socket.room have to be created
socket.emit('getFullConv', { fullProject, getPseudo, card });
Par contre, si je l’enlevé, plus de problème. Je peux interagir avec le site sans probleme mais sans les fonctionnalités utilisant mes websockets .
SERVER :
var express = require('express');
var app = express();
//create server
var http = require('http');
var fs = require('fs');
var server = http.createServer(app);
connection.connect(function (error) {
if (error) throw error
else { console.log('All is under controle =)'); }
});
app.use('/static', express.static(__dirname + '/public'));
// Chargement de socket.io
var io = require('socket.io').listen(server);
// usernames which are currently connected to the chat
var users = {};
// rooms which are currently available in chat
var rooms = [];
io.sockets.on('connection', function (socket) {
// when the client emits 'getFullcoversation', this listens and executes
socket.on('getFullConversation', function (info) {}
});
server.listen(8080);
CLIENT :
// Connexion à socket.io
var socket = io.connect('http://MON_IP:8080/');
socket.on('fullMsgChat', function (results) {});
Après tout ce temps, j'ai réussi à résoudre le probleme. Maintenant, tout marche correctement .
Le blocage résidait dans l'écriture de mes socket.emit() qui n'étaient pas correctes .
Au lieu d'écrire :
//Send to server that a socket.room have to be created
socket.emit('getFullConv', { fullProject, getPseudo, card });
il faut écrire :
//Send to server that a socket.room have to be created
socket.emit('getFullConv', { fullProject : fullProject, getPseudo : getPseudo, card : card });
La première écriture s’exécute très bien sur le desktop, mais pas sur mobile ou tablette. Dans mon cas, il me faut utiliser la deuxième écriture pour que le script fonctionne sur tous les supports .
socket-io et mobile
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.