2016-04-05 9 views
1

Ich verwende Rachet und versuche den JS-Code here. Nach dem Ausführen des folgenden Codes im Konsolenfenster von Chrome kann ich keine Nachricht sehen. conn.send() sagt undefined:WebSocket: Es konnte keine Nachricht am Client-Ende empfangen werden.

var conn = new WebSocket('ws://localhost:8080'); 
conn.onopen = function(e) { 
    console.log("Connection established!"); 
}; 

conn.onmessage = function(e) { 
    console.log(e.data); 
}; 

aktualisieren

-Code auf Server Ende:

public function onMessage(ConnectionInterface $from, $msg) { 
     $numRecv = count($this->clients) - 1; 
     echo sprintf('Connection %d sending message "%s" to %d other connection%s' . "\n" 
      , $from->resourceId, $msg, $numRecv, $numRecv == 1 ? '' : 's'); 

     foreach ($this->clients as $client) { 
      if ($from !== $client) { 
       print "Someone else is here"; 
       // The sender is not the receiver, send to each client connected 
       $msg = ' Server responds:- '.$msg; 
       $client->send($msg); 
      } 
     } 
    } 

Siehe Client und Server in Aktion enter image description here

Update # 2

Es scheint folgende Prüfung wird das Problem: bei Server

if ($from !== $client) {} 

Aber beim Entfernen, dass es Rundfunk alle verbinden Kunden eher zu dem, der Nachricht

+0

können Sie Ihren PHP-Code teilen? speziell wo Sie die verbundenen Kunden speichern/behalten? – brense

+0

@brense es ist hier 'Chat' Klasse http://socketo.me/docs/hello-world – Volatil3

+0

OK, im Chat-Server-Fenster sehen Sie Ihren Client verbinden? 'Neue Verbindung! xxx' – brense

Antwort

0

, dass das Thema dieser Linie war stellte sich heraus gesendet ist Ende:

if ($from !== $client) {} 

es war nicht Server jeweiligen Kunden reagieren zu lassen und würde reagieren, wenn es nicht dass Client ist. Ich änderte es einfach zu:

if ($from === $client) {} 

Und es funktionierte für mich. Die !== in Beispielcode angegeben war für einen typischen Chat-Anwendung, wo ein Client mit anderen sprechen, während in meinem Fall wird es nur eine sein Server <->Client

+0

Sie können die if-Anweisung auch komplett entfernen, damit die Nachricht an alle Clients gesendet wird, unabhängig davon, ob sie der Absender waren oder nicht – brense

Verwandte Themen