Ich führe die echo.websocket.org Demo für die ws WebSocket library auf meinem lokalen Rechner.Ist der WS WebSocket-Client defekt? echo.websocket.org Demo schlägt mit einem 404 bei lokaler Ausführung fehl
var WebSocket = require('ws');
var ws = new WebSocket('ws://echo.websocket.org/', {
protocolVersion: 8,
origin: 'http://websocket.org'
});
ws.on('open', function open() {
console.log('connected');
ws.send(Date.now().toString(), {mask: true});
});
ws.on('close', function close() {
console.log('disconnected');
});
ws.on('message', function message(data, flags) {
console.log('Roundtrip time: ' + (Date.now() - parseInt(data)) + 'ms', flags);
setTimeout(function timeout() {
ws.send(Date.now().toString(), {mask: true});
}, 500);
});
ich diesen Code mit Browserify zusammengestellt (Details in den repo) und testete ihn in Chrome und Safari.
es mit einem 404 auf Chrome nicht 51.0.2704
Fetch API cannot load http://echo.websocket.org/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 404. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
Es schlägt mit 400 auf Safari 9.1.1
Failed to load resource: the server responded with a status of 400 (WebSocket Upgrade Failure)
dies bei der Fehlersuche, habe ich einen lokalen WebSocket-Server mit Node.js/Express hat einen WebSocket-Client mit SwiftWebSocket für iOS erstellt und konnte eine Verbindung erfolgreich herstellen. Ich habe dann den Code oben auf diese neue URL gerichtet, und die Verbindung schlägt immer noch fehl.
Ist der WS-Client defekt?
Was meinen Sie mit "browserbasierten WebSocket-Clients"? Wie hat Chrome den Node-Code ausgeführt, um zu 404 zu gelangen, und wo kommt 'fetch' her und warum holst du die ws-URL? – dandavis
@dandavis Ich brauche einen funktionalen WebSocket-Client in Javascript geschrieben. Das ist alles was ich meinte. Ich benutze browserify zum kompilieren, dann habe ich eine HTML-Datei, die auf das kompilierte Skript verweist. Ich weiß nicht, woher Fetch kommt. Die 'ws'-Dokumente erwähnen es nicht als Abhängigkeit, und ich habe keine Knotenmodule installiert, die über das hinausgingen, was die Demo verlangte. –
Interessanterweise hat Safari einen etwas anderen Fehler, den ich oben eingefügt habe. Ich frage mich, ob Fetch eine Chrome-spezifische Sache ist. –