2016-10-13 19 views
0

我摔倒了websocket和http。为什么websocket连接创建不通过http?

我已经写了下面的例子:

var fs = require('fs'); 

var server = http.createServer(function(request, response) { 
    console.log ("HTTP Request created..."); 
    // I am responding something here.. 
}); 

server.listen(1234, function() { 
    console.log((new Date()) + ' Server is listening on port 1234'); 
}); 


var WebSocketServer = require('websocket').server; 
wsServer = new WebSocketServer({ 
      httpServer: server 
}); 

wsServer.on('request', function(re){ 
     var conn = re.accept(null, re.origin); 
      console.log ("Accepted New Connection.."); 
      conn.on('message', function(message) { 
       console.log ('message received' + message.utf8Data); 
      }); 
      }); 

我在连接到该服务器的两种方式尝试。

1) Through Browser. 
2) through node.js application 

当我试图达到通过浏览器前该服务器:http:IP:1234, 我得到“HTTP请求接受。”被打印出来,在那里,当我与 尝试下面的代码中的Node.js,我没有看到打印这条消息。

var WebSocket = require('ws') 
    ws = new WebSocket('ws://IP:1234'); 

    ws.on('open', function() { 
      console.log ("WebSocket opened.."); 
      ws.send('something'); 
    }); 
ws.on('message', function(message) { 
     console.log('received: %s', message.data); 
}); 

当我试图连接通过
WS到网络服务器=新的WebSocket( 'WS:// IP:1234');

为什么它没有通过HTTP?。我的基本理解是Websocket只是HTTP之上的升级,在这种情况下,我会假设WebSocket()依次通过HTTP连接到服务器。还是我困惑?

回答

0

Websocket请求不会触发HTTP服务器实例上的request事件(为此,您传递给createServer的函数是侦听器)。

如果你想观看的HTTP服务器上的WebSocket请求,听upgrade事件:

server.on('upgrade', function (req, socket, head) { ... }); 

我想这是因为http将处理握手/升级本身,这是通过不同的事件来完成。

相关问题