0

私のserver.jsは正しいようです。

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, "mysite.com");
console.log('Server running at mysite.com:1337/');

私のクライアントの肉は以下の通りです。

function init() {

  // Connect to Web Socket.
  // Change host/port here to your own Web Socket server.
  ws = new WebSocket("ws://mysite.com:1337");

  // Set event handlers.
  ws.onopen = function() {
    output("onopen");
  };

}

http://www.mysite.com:1337にアクセスすると、HelloWorldが正しく受信されます。ただし、クライアントを使用して接続し、Fireバグでデバッグしようとすると、次の出力が得られます。

[WebSocket] connected
[WebSocket] request header: GET / HTTP/1.1 Upgrade: WebSocket Connection: Upgrade Host: mysite.com:1337 Origin: http://www.mysite.com Cookie: Sec-WebSocket-Key1: 115 17 p^!x-93 IERc16 7 Sec-WebSocket-Key2: 1 75 7Z i `. 8u $l031 4j9
[WebSocket] sent key3: ±Ôñ<g
[WebSocket] closed

そして、WebSocketは、私が何かをする前に自動的に閉じられます。誰かが私が受けているエラーに光を当てることができますか、そしてあなたは私が何をすべきだと思いますか?

4

1 に答える 1

5

node.js HTTPサーバーを作成しましたが、WebSocketサーバーとして接続しようとしています。WebSocketプロトコルはプレーンソケットではなく、プレーンHTTPリクエストでもありません。WebSocketにはハンドシェイクのようなHTTPがありますが、その後、(プレーンソケットとは異なり)少量のメッセージフレーミングを持つ全二重接続(ソケットのように、HTTPとは異なります)があります。

node.js WebSocketサーバーを作成する場合は、Socket.IOまたはnode-websocket-serverを使用してみてください。一方、Javascriptから通常のHTTPサーバーに接続する場合は、jQueryなどのAJAXサポートを備えた優れたJavascriptライブラリの1つを使用してください。

于 2011-05-07T23:35:28.107 に答える