2016-06-18 12 views
0

私はWebSocketsとNodeから始めて、私の最初のクライアントは私のサーバに接続していません。Javascript WebSocketが接続されていません

サーバー:

var http = require('http'); 
var onRequest = function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('aaaaa\n'); 
} 
http.createServer(onRequest).listen(9090, '127.0.0.1'); 

クライアント:私はすべてを試してみましたが、サーバーに接続できませんでした

window.onload = function() { 
    var canvasHandle = false; 
    var bufferHandle = false; 
    var bufferImage = false; 
    var WIDTH = 400; 
    var HEIGHT = 400; 
    var lastTime = false; 
    var currentTime = false; 
    var dt = false; 
    var unitStep = 2; 

    var unitX = new Object(); 
     unitX.name = "John"; 
     unitX.x = 10; 
     unitX.y = 10; 
     unitX.bodyWidth = 20; 
     unitX.bodyHeight = 20; 
     unitX.bodyColor = "rgb(0,0,255)"; 

    var update = function(dt) { 
    } 
    var draw = function() { 
     //Clear Buffer 
     bufferHandle.fillStyle = "rgb(200,200,200)"; 
     bufferHandle.beginPath(); 
     bufferHandle.rect(0, 0, WIDTH, HEIGHT); 
     bufferHandle.fill(); 

     //Draw Objects 

     bufferHandle.fillStyle = unitX.bodyColor; 
     bufferHandle.beginPath(); 
     bufferHandle.rect(unitX.x, unitX.y, unitX.bodyWidth, unitX.bodyHeight); 
     bufferHandle.fill(); 

     //Double Buffer 
     bufferImage = bufferHandle.getImageData(0,0,WIDTH,HEIGHT); 
     canvasHandle.putImageData(bufferImage,0,0); 
    } 
    var gameLoop = function(){ 
     currentTime = new Date(); 
     elapsedTime = currentTime.getTime() - lastTime.getTime(); 

     update(elapsedTime); 
     draw(); 

     lastTime = currentTime; 
    } 

    $(document).keypress(function(evt){ 

     switch(evt.which){ 
      case 100: //d 
       unitX.x += unitStep; 
       break; 
      default: 
       //alert(evt.which); 
     } 
    }); 

    var socket = new WebSocket("ws://127.0.0.1:9090/"); 

    socket.onerror = function(error) { 
     alert('Error'); 
    }; 
    socket.onopen = function(event) { 
     alert('Connected'); 
    }; 
    socket.onmessage = function(event) { 

    }; 
    socket.onclose = function(event) { 

    }; 
    //Create Canvas 
    bufferHandle = document.createElement('canvas'); 
    bufferHandle.width = WIDTH; 
    bufferHandle.height = HEIGHT; 
    bufferHandle = bufferHandle.getContext('2d'); 

    canvasHandle = document.getElementById('game'); 
    canvasHandle = canvasHandle.getContext('2d'); 
    lastTime = new Date(); 
    setInterval(
     function(){ 
      gameLoop(); 
     }, 50 
    ); 

}; 

。私がurlから接続しようとすると 'localhost:9090'が動作し、 'aaa'に戻ります。しかし、クライアントスクリプトを使用するとエラーになる

+1

WebSocketの着信を受け入れるにはサーバーがwebSocketプロトコルをサポートする必要があります。サーバーはWebSocket接続をサポートしていないプレーンなhttpサーバーであるようです。また、Webページがロードされたドメイン/ポートとは別のドメイン/ポートに接続しようとする場合は、CORSをサポートしてクロスオリジン接続を行う必要があります。 – jfriend00

答えて

1

サーバーは単なるHTTPサーバーです。 HTTPサーバーの上にWebSocketsサーバーを使用する必要があります。

wsnpmでインストールするのが最も一般的な方法です。ソースコードと手順は次のとおりです。https://github.com/websockets/ws

また、socket.ioも使用できます。ほとんどのブラウザ(古いものと新しいもの)がWebSocket(またはその代用品)を使用できるようにするため、WebSocketと他のメソッドを併用しています。 http://socket.io/get-started/chat/

関連する問題