Wo befindet sich die Client-Bibliothek socket.io?

76

Soweit ich gesehen habe, gibt es keine Erklärung dafür, wo wir das clientseitige Skript finden sollen, socket.iowenn node.jses nicht als Webserver verwendet wird. Ich habe ein ganzes Verzeichnis clientseitiger Dateien gefunden, aber ich benötige sie in einer kombinierten Version (wie sie bei der Verwendung von node.js-Webservern bereitgestellt wird). Irgendwelche Ideen?

Braun Shedd
quelle

Antworten:

68

socket.io.js wird in Ihr clientseitiges HTML eingefügt. Etwas wie:

<script type="text/javascript" src="socket.io.js"></script>

Mein Skript befindet sich:

/usr/local/lib/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js

Kopieren Sie diese Datei an die Stelle, an der Ihr Server sie bereitstellen soll.

EhevuTov
quelle
4
Super, danke. Konnte nicht herausfinden, wo in diesem Durcheinander der Verzeichnisstruktur diese Datei war :)
Braun Shedd
4
Ja, das ist nicht so logisch. Viele Leute, die socket.io benutzen, fragen das. Alles Gute :-)
EhevuTov
4
Danke, Mann! Es ist seltsam, dass es in den Dokumenten oder Beispielen keine Informationen dazu gibt.
Peter
1
github.com/LearnBoost/Socket.IO/wiki/How-do-I-serve-the-client <script src = "http: // <uri: port> /socket.io/socket.io.js"> < / script>
dVaffection
1
@dVaffection Dies funktioniert nur, wenn sich die Webanwendung und socket.io auf demselben Server und Port befinden.
Jo David
171

Der beste Weg, dies zu tun, ist die Verwendung einer Laube .

bower install socket.io-client --save

und fügen Sie Folgendes in den HTML-Code Ihrer App ein:

<script src="/bower_components/socket.io-client/socket.io.js"></script>

Auf diese Weise können Sie den socket.io-Teil Ihres Clients genauso behandeln wie jedes andere verwaltete Paket.

Matt Way
quelle
5
Dies ist die beste Lösung, danke! Falls dies jemand anderem hilft, befindet sich der minimierte socket.io-Client inbower_components/socket.io-client/dist/socket.io.min.js
mikermcneil
5
Laube ftw. <script src = "bower_components / socket.io-client / socket.io.js"> </ script>
Connor Leech
Das Ausführen der Task "bowerInstall: target" (bowerInstall) socket.io-client wurde nicht in Ihre Datei eingefügt. Suchen Sie in "client / bower_components / socket.io-client" nach der gewünschten Datei und fügen Sie sie manuell in Ihre Datei ein.
Smk
Dies hat die Bibliothek gut installiert, aber es fehlt eine bower.json, soweit ich das beurteilen kann. Mein Schluckschritt, der Bower-Bibliotheken ('Haupt-Bower-Dateien') automatisch verkettet, zieht ihn nicht ein.
Dave Ceddia
Ich habe es überprüft bower info socket.io-clientund es sieht so aus, als wäre es für bower ohne bower.json registriert (daher wurde im bower repo ein Standard erstellt). Sie können entweder das Projekt aufteilen, eine bower.json erstellen und Ihre eigene Bower-Version registrieren. Erstellen Sie eine Pull-Anfrage mit einer bower.json. Erstellen Sie ein Problem und prüfen Sie, ob ein Mitwirkender es erstellen kann.
Matt Way
25

Ich denke, dass es besser und richtiger ist, es von dieser URL zu laden

src="/socket.io/socket.io.js" 

in der Domäne, in der socket.io ausgeführt wird. Das Positive an dieser Lösung ist, dass beim Aktualisieren Ihres socket.io npm-Moduls auch Ihre Client-Datei aktualisiert wird und Sie sie nicht jedes Mal manuell kopieren müssen.

Capaj
quelle
1
Dies ist die beste Antwort IMO. Es wird empfohlen, das clientseitige Include aus der Socket.IO-Dokumentation zu verwenden. Es erklärt nur, woher es kommt, zusammen mit den erwähnten Vorteilen von @Capaj.
Fernando Piancastelli
15
Dies ist nur die beste Lösung, wenn Node.js die Website bedient, auf der die Verbindung hergestellt werden soll. Das ist ein wirklich großes "WENN".
Jo David
8

Ich habe Bower verwendet, wie in Matt Way's Antwort vorgeschlagen, und das hat großartig funktioniert, aber dann hatte die Bibliothek selbst keine eigene bower.jsonDatei.

Dies bedeutete, dass das bower-main-filesGulp-Plugin, mit dem ich die JS-Dateien meiner Abhängigkeiten finde, nicht in socket.io gezogen wurde und beim Laden der Seite ein Fehler angezeigt wurde. Das Hinzufügen einer Überschreibung zu meinem Projekt hat bower.jsondas Problem umgangen.

Installieren Sie zuerst die Bibliothek mit Laube:

bower install socket.io-client --save

Fügen Sie dann die Überschreibung zur bower.json Ihres Projekts hinzu:

"overrides": {
  "socket.io-client": {
    "main": ["socket.io.js"]
  }
}
Dave Ceddia
quelle
6

Für alle, die wiredep ausführen und den "socket.io-client wurde nicht in Ihre Datei eingefügt" erhalten. Error:

Ändern Sie Ihre Wiredep-Aufgabe wie folgt:

wiredep: {
  ..
  main: {
    ..
    overrides: {
      'socket.io-client': {
        main: 'socket.io.js'
      }
    }
  }
KD
quelle
@kd Das hat es gelöst, aber warum ist das so? Was passiert nicht standardmäßig mit socket.io-client?
Nitzankin
Weil sie die Laube nicht unterstützen wollen.
KD
2

Wenn Sie bower.json verwenden, fügen Sie die Abhängigkeit socket.io-client hinzu.

"socket.io-client": "0.9.x"

Führen Sie dann bower install aus , um socket.io-client herunterzuladen.

Fügen Sie dann das Skript-Tag in Ihr HTML ein.

<script src="bower_components/socket.io-client/dist/socket.io.min.js"></script>
Bienvenido David
quelle
2

Ich habe einen bower-kompatiblen socket.io-Client erstellt, der wie folgt installiert werden kann:

bower install sio-client --save

oder für Entwicklungszwecke:

bower install sio-client --save-dev

Link zum Repo

Sina Sharafzadeh
quelle
Wirst du irgendwelche Updates veröffentlichen? Socketio ist jetzt auf 1.3.5. Ihre ist aus irgendeinem Grund sehr langsam und klobig.
wenn __name__ None ist
Vielleicht gibt es eine Möglichkeit, das Update der Bower-Client-Version zu automatisieren?
Diogyn
0

Wenn Sie https://github.com/btford/angular-socket-io verwenden, stellen Sie sicher, dass Ihre index.html wie folgt lautet:

<!-- https://raw.githubusercontent.com/socketio/socket.io-client/master/socket.io.js -->
<script src="socket.io.js"></script>

<!-- build:js({client,node_modules}) app/vendor.js -->
<!-- bower:js -->
<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/angular/angular.js"></script>
<!-- ...... -->
<script src="bower_components/angular-socket-io/socket.js"></script>
<!-- endbower -->
<!-- endbuild -->



<script type="text/javascript" charset="utf-8">
   angular.module('myapp', [
// ...    
'btford.socket-io'
]);

// do your angular/socket stuff
</script>
IHeartAndroid
quelle