2013-07-20 5 views
28

Ich versuche, socket.io (Node-Bibliothek) zu arbeiten.Wo befindet sich die Socket.IO-clientseitige .js-Datei?

Ich habe die serverseitige js funktioniert, und es hört zu. Die socket.io Website heißt es einfach:

<script src="/socket.io/socket.io.js"></script> 
<script> 
    var socket = io.connect('http://localhost'); 
    socket.on('news', function (data) { 
    console.log(data); 
    socket.emit('my other event', { my: 'data' }); 
    }); 
</script> 

Das ist schön, aber was JS-Datei importieren bin ich!?!

Ich ging in das Verzeichnis node_modules, wo ich socket.io bis npm installiert habe, und innerhalb socket.io/lib/ ist socket.io.js Datei. Dies ist jedoch serverseitig (verwendet den Ausdruck require(), der Fehler auf dem Client).

Ich habe eine Stunde damit verbracht, mich umzusehen, und ich kann keine Client-.js-Datei zur Arbeit bekommen.

Was fehlt mir?

Antwort

35

Ich habe es schließlich geschafft, dies selbst zu beantworten.

Die socket.io Einstieg Seite auf diese ist nicht klar, aber ich fand, dass die Server-Seite von Socket.io automatisch die Js auf Startknoten Datei hosts im Verzeichnis in der Dokumentation angegeben:

"/socket.io/socket.io.js" 

Also Sie buchstäblich nur auf diese URL unabhängig von Ihrer Web-App-Struktur, und es funktioniert.

+17

Es ist eine Datei, die von dem Knotenserver on-the-fly generiert wird, ja. Ich fand auch merkwürdig, wie sie kein Wort darüber sagen, es ist fast so, als ob sie erwarten, dass jeder blind ihr Beispiel kopiert, ohne zu hinterfragen, was dort vor sich geht. – Mahn

+0

Und wenn es dann nicht funktioniert, was machen wir? Hier bin ich und suche S/O nach Antworten ... (und finde immer noch keine). Ich hasse Magie. – jleach

+1

Dies funktioniert nur, wenn der Prozess, der socket-io serverseitig ausgeführt wird, der gleiche Prozess ist, der die Route behandelt hat/den HTML/JS bereitgestellt hat. - Andernfalls müssen Sie den URL angeben: Port wie "http: // localhost: 3466/socket.io/socket.io.js". I.e. (obv) Wenn Sie eine Webanwendung haben, die versucht, auf einen anderen Prozess zu verweisen, müssen Sie die gesamte URL angeben – mmcrae

4

Ich würde vorschlagen, zu überprüfen, ob das Verzeichnis node_modules auf der obersten Ebene Ihres App-Verzeichnisses ist. Außerdem glaube ich, dass Sie eine Portnummer angeben müssen; Sie sollten etwas wie var socket = io.connect('http://localhost:1337'); schreiben, wobei die Portnummer 1337 ist.

+0

Es lohnt sich befindet könnte zu erwähnen, dass Sie verzichten können der Aufruf von 'code'connect'code' und die URL all zusammen, wenn Sie Ihren Socket mit demselben Protokoll und auf demselben Host und Port verwenden wollen, indem Sie 'var socket = io();' verwenden. Dies wird Ihr Handle erstellen für zukünftige Verwendung und versuchen, eine Verbindung herzustellen. – Alex

1

Here können Sie CDN für verschiedene Versionen finden.

0

Wenn Sie haben npm installieren dann die Client socket.io Datei auf node_modules/socket.io-client/dist/socket.io.js

Verwandte Themen