Ich versuche, socket.io an einen Hapi.js-Server anzuhängen. Ich habe die socket.io-Implementierung in Vanilla Node.js getestet und alles funktioniert super; Die Serverseite der Hapi-Implementierung scheint gut zu funktionieren, aber die Ressource "/socket.io/socket.io.js" wird nicht an den Client geliefert.
Ich habe das Hapi-Beispiel überprüft, aber sie zeigen nur, was zu tun ist auf dem Server, und ihre Dokumentation auf dem Client-Handshake scheint seltsam: sie haben einen Server auf Port 8000 aber sagen, für den Socket.io Handshake zu 8080 - Ich habe sogar versucht, dies (was wonky und inkonsistent mit jedem anderen scheint socket.io Implementierung) ohne Glück.
Danke!
Hapi 8 hat einige neue Feinheiten eingeführt, wenn jemand dieses Problem erneut aufgreift ...
Auf dem Client müssen Sie /socket.io/socket.io.js
nicht verwenden, stattdessen
https://cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js
) http://yoursite.io/js/socket.io/socket.io.js
) Besser noch, verwenden Sie etwas wie npm / browserify und ( Ссылка ):
var socket = require('socket.io-client')('http://localhost:8080');
Auf welche Weise auch immer Sie den clientseitigen Code über
einbeziehenMit Hapi 8 kannst du auf deinem Server etwas Cooles machen:
server.js
%Vor%/plugins/socketIO/index.js
%Vor% Um Ihre spezifische Frage zu beantworten: Wir haben entschieden, das Skript socket.io.js
von der CDN zu laden (zB: Ссылка ) um unsere App schneller zu laden. siehe: index.html # L23
Wenn das Laden des Client-Skriptformulars CDN keine Option ist, weil Sie sich im DFÜ-Modus befinden oder offline arbeiten, verwenden Sie inert und die Datei Ihrer App zugänglich machen. z.B.:
%Vor%Die Client-Datei befindet sich in: your_project / node_modules / socket .io-client / socket.io.js
Wenn Sie noch nach einem Beispiel von suchen, wie Socket.io in einem verwendet werden soll > Hapi.js app haben wir ein komplettes erstellt (mit Dokumentation / Kommentare und End-to-End-Tests).
siehe: Ссылка
Es ist auf dem neuesten Stand mit den neuesten Versionen von Hapi & amp; Socket.io und verwendet Redis Pub-Sub, um Chatnachrichten zu erhalten und zu verteilen.
Sie können versuchen, die Datei socket.io.js aus dem Verzeichnis node.js in ein bekanntes Verzeichnis zu kopieren.
Ich möchte zunächst bestätigen, dass Sie keine Probleme mit der Firewall haben, die die Zustellung der Anfrage beeinträchtigen.
Wenn eine Firewall nicht für das Blockieren der Anforderung verantwortlich ist, stellen Sie sicher, dass der Quellcode für die JavaScript-Datei auf denselben Server und dieselbe Portnummer verweist, wie in der Zeile Hapi.createServer angegeben, die Sie konfiguriert haben.
Wenn die Anfrage den Server erreicht, gibt sie eine Debug-Zeile im Terminal aus, die anzeigt, dass sie die Datei geliefert hat.