IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

WebSocket erreur socket_bind()


Sujet :

Langage PHP

  1. #1
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 396
    Points : 4 825
    Points
    4 825
    Par défaut WebSocket erreur socket_bind()
    bonsoir,
    j'ai suivi cette documentation pour utiliser un WebSocket, mais je bloque dans l'étape -> Tapez : "php -q serveur.php" dans l'invite de commande.
    quand je tape la commande, je reçois :
    Warning: Module 'openssl' already loaded in Unknown on line 0
    PHP Warning: socket_bind(): Host lookup failed [11004]: Le nom demandل est vali
    de, mais aucune donnلe du type requise nْa لtل trouvلe.
    in C:\xampp\htdocs\websocket\classes\serveur.php on line 82
    quelqu'un a déjà eu ce problème?

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 396
    Points : 4 825
    Points
    4 825
    Par défaut
    maintenant je me suis débarrassé de l'erreur Warning: Module 'openssl' already loaded in Unknown on line 0, il fallait commenter ;extension=php_openssl.dll dans le php.ini.
    maintenant j'ai un autre problème, après avoir taper php-q path/to/myserver/serveur.php, la websocket est bien démarrée mais j'ai ça (image en bas) dans le shell de xampp.
    Pièce jointe 224656
    qu'est ce que je dois faire pour corriger cette erreur?

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Montres nous cette ligne 19 qui pose problème.

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 396
    Points : 4 825
    Points
    4 825
    Par défaut
    avant que je fasse la modification, la ligne été :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    socket_select($changed,$write,$expect,0,1000000);
    tout ce que j'ai fais, c'est remplacé la ligne par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $write=NULL;
    $expect=NULL;
    $num_socket=socket_select($changed,$write,$expect,0);
    maintenant je n'ai plus d’exception, mais quand je lance le projet dans le navigateur via localhost:8080 puis remplire la zone de texte "Pseudo" puis écrire un message et tester, la console me retourne une exception de websocket.js:
    Code error : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    websocket.js:58 Uncaught DOMException: Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.()
     
    VM864:35 WebSocket connection to 'ws://localhost:8080/websocket/classes/serveur.php' failed: WebSocket opening handshake timed outWrappedWebSocket @ VM864:35WebsocketClass @ websocket.js:8(anonymous function) @ websocket.js:64
    Pièce jointe 224673Pièce jointe 224674

    websocket.js ligne 8 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.socket = new WebSocket(host);
    websocket.js ligne 58
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.socket.send('{"action":"ctrl/chat/out", "msg":' + JSON.stringify(message) + '}');
    websocket.js ligne 64
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var socket = new WebsocketClass('ws://localhost:8080/websocket/classes/serveur.php');   /*192.168.0.1*/

  5. #5
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 396
    Points : 4 825
    Points
    4 825
    Par défaut
    le network de l'outil de développement de chrome me donne cette image :
    Pièce jointe 224749
    Normalement le socket est connecté non? si c'est oui pourquoi alors je ne reçois pas l'alert "connexion ouverte" ?

    websocket.js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    var uId = '';
    var button = document.getElementsByClassName('sii-chat-send')[0];
    var messageInput = document.getElementsByName('sii-chat-message')[0];
    var buttonUser = document.getElementsByClassName('sii-chat-login')[0];
    var contentMessage = document.getElementsByClassName('sii-chat-content')[0];
     
    var WebsocketClass = function(host){	
    	this.socket = new WebSocket(host);
    	this.console = document.getElementsByClassName('console')[0];
    };
    WebsocketClass.prototype = {
    	initWebsocket : function(){
    		var $this = this;
    		this.socket.onopen = function(){
    			$this.onOpenEvent(this);
    			alert("connexion ouverte");
    		};
    		this.socket.onmessage = function(e){
    			$this._onMessageEvent(e);
    		};
    		this.socket.onclose = function(){
    			$this._onCloseEvent();
    		};
    		this.socket.onerror = function(error){
    			$this._onErrorEvent(error);
    		};
    		this.console.innerHTML = this.console.innerHTML + 'websocket init <br />';
    	},
    	_onErrorEvent :function(err){
    		console.log(err);
    		this.console.innerHTML = this.console.innerHTML + 'websocket error <br />';
    	},
    	onOpenEvent : function(socket){
    		console.log('socket opened');
    		this.console.innerHTML = this.console.innerHTML + 'socket opened Welcome - status ' + socket.readyState + '<br />';
    	},
    	_onMessageEvent : function(e){
    		e = JSON.parse(e.data);
     
    		if(e.msg.length > 0) e.msg = JSON.parse(e.msg);
     
    		contentMessage.innerHTML = contentMessage.innerHTML 
    			+ '&gt;<strong>' + e.msg.from + '</strong> : ' + e.msg.message + '<br />';
    		contentMessage.scrollTop = contentMessage.scrollHeight;
    		this.console.innerHTML = this.console.innerHTML + 'message event lanched <br />';
    		this.console.scrollTop = this.console.scrollHeight;
    	},
    	_onCloseEvent : function(){
    		console.log('connection closed');
    		this.console.innerHTML = this.console.innerHTML + 'websocket closed - server not running<br />';
    		uId = '';
    		document.getElementsByName('sii-chat-name')[0].value = '';
    		messageInput.disabled = 'disabled';
    		button.disabled = 'disabled';
    	},
    	sendMessage : function(){
    		var message = '{"from":"' + uId + '", "message":"' + messageInput.value + '"}';
    		this.socket.send('{"action":"ctrl/chat/out", "msg":' + JSON.stringify(message) + '}');
    		messageInput.value = '';
    		this.console.innerHTML = this.console.innerHTML + 'websocket message send <br />';
     
    	}
    };
    var socket = new WebsocketClass('ws://127.0.0.1:8080/websocket/classes/serveur.php');//192.168.0.1/ 127.0.0.1
    //var url='ws://localhost:8080/websocket/classes/serveur.php/echo'
    //	, socket=new WebSocket(url);
    if(button.addEventListener){
    	buttonUser.addEventListener('click', function(e){
    		e.preventDefault();
    		socket.initWebsocket();
    		//initialWebsocket(socket);
    		uId = document.getElementsByName('sii-chat-name')[0].value;
    		messageInput.disabled = '';
    		button.disabled = '';
    		return false;
    	}, true);
    	button.addEventListener('click',function(e){
    		e.preventDefault();
    		socket.sendMessage();
    		return false;
    	}, true);
    } else{
    	console.log('votre navigateur n\'accepte pas le addevenlistener');
    }

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 396
    Points : 4 825
    Points
    4 825
    Par défaut
    aucune piste a suivre?

  7. #7
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 396
    Points : 4 825
    Points
    4 825
    Par défaut Socket.io
    bonsoir,
    après plusieurs essaie avec phpWebSocket, rien n'a pu fonctionner comme il le fallait, c'est pour cela que j'ai essayé socket.io avec nodejs.
    j'ai suivi cette Documentation et j'ai réussi a me connecter a la socket.io via CMD, quand j'ouvre mon site sur le navigateur, le CMD me dit bien qu'il y a un utilisateur qui vient de se connecter.Pièce jointe 225082.

    par-contre, la fonction emit() n'envoi pas les messages, et même dans le CMD, je ne vois plus les messages envoyés (comme la documentation)+ pas d'alert() et pas d'append() (ligne 36 et 37 de index.html).

    index.html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    <!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; }
        </style>
     
      </head>
      <body>
        <ul id="messages"></ul>
        <form action="" id="form">
          <input id="m" autocomplete="off" /><button>Send</button>
        </form>
    	<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
     
        <script src="../global_jQuery/jquery-3.1.1.js"></script>
        <script>
    	$(document).ready(function(){ 
    	  var socket = io.connect('http://localhost:3000/IOSocket');
    		$('#form').on('submit',function(e){
    			var _message=document.getElementById("m").value;
    			socket.emit('chat',_message);
    			$('#m').val('');
    			return false;
    	  });
          socket.on('chat', function(msg){
    	  	$('#messages').append($('<li>').text(msg));
    		alert("message");
          });
     
    	 });
        </script>
        <!--<script type="text/javascript" src="node_modules/socket.io-client/socket.io.js"></script>!-->
     
      </body>
    </html>
    index.js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    var express = require('express'),
        http = require('http');
    var app = express();
    var server = http.createServer(app);
    var io = require('socket.io').listen(server);
     
    app.get('/', function(req, res){
      res.sendfile('index.html');
    });
     
    io.on('connection', function(socket){
    	console.log('a user connected');
    	  socket.on('chat', function(msg){
    		io.emit('chat:',msg);
    	  });
    });
     
    server.listen(3000, function(){
      console.log('listening on *:3000');
    });
    pourriez-vous m'aider un peu s'il vous plait?

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    En effet php websocket est peu utilisé et tu auras certainement plus de réponses avec node.js. Cela dit tu ferais mieux de poster dans la rubrique "javascript node.js" maintenant

  9. #9
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 396
    Points : 4 825
    Points
    4 825
    Par défaut
    justement ABCIWEB, j'ai laissé tombé websocket et je me suis orienté vers socket.io de node.js, puis j'ai ajouté CE POST.

    j'ai bien le message 'user is connected' dans le CMD et le serveur écoute bien le port 3000, mais la fonction .emit n'a jamais fonctionné correctement, je n'ai pas arrêté de chercher une solution sur le net, mais sans succès ! je deviens fou !!

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    Il y a une rubrique spécifique pour javascript côté serveur ici.

  11. #11
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 396
    Points : 4 825
    Points
    4 825
    Par défaut
    Merci ABCIWEB, je viens de le faire

Discussions similaires

  1. Erreur connexion websocket dans Glassfish 3.1.2
    Par Anton46 dans le forum Glassfish et Payara
    Réponses: 1
    Dernier message: 04/06/2013, 21h53
  2. [websocket / firebug] Eviter / gérer erreur déconnexion
    Par Squalthor dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 02/01/2013, 20h38
  3. Websocket, coté server : erreur du handshake et du getheaders
    Par vinze60 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 0
    Dernier message: 05/05/2012, 14h15
  4. erreur IDL:omg.org/CORBA/MARSHAL:1.0
    Par Pinggui dans le forum CORBA
    Réponses: 3
    Dernier message: 13/05/2002, 16h05
  5. [Kylix] Erreur objet
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 10h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo