为什么websocket连接创建不通过http
why websocket connection creation does not pass through 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
当我尝试通过浏览器ex: 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);
});
当我试图通过连接到web服务器时ws = new WebSocket('ws://IP:1234');
为什么不能通过HTTP?我的基本理解是Websocket只是HTTP之上的升级,在这种情况下,我会假设Websocket(),反过来通过HTTP连接到服务器对吗?
Websocket请求不会触发HTTP服务器实例上的request
事件(您传递给createServer
的函数是侦听器)。
如果你想观察HTTP服务器上的websocket请求,监听upgrade
事件:
server.on('upgrade', function (req, socket, head) { ... });
我认为这是因为http
将处理握手/升级本身,这是通过不同的事件完成的。
相关文章:
- Firefox插件:保存到文本文件的HTTP日志,其中包含时间、用户名、计算机名;t创建文本文件
- 组合Bookmarklets以在HTTP和HTTPS之间创建切换
- 我想创建一个类似于http://www.creativecrisp.com/.
- 正确创建$http.get
- Node JS http-proxy - 创建的 URL 存在问题
- 在 node.js 中创建 http echo 服务器
- 如何创建一个 http 拦截器以在“响应”中返回错误
- 节点 js 找不到响应体 HTTP 创建服务器
- 在 Node 中,创建具有“等待连接”超时的 http 连接的好方法是什么
- 在 AngularJS 中成功的 http 请求上创建一个 DOM 元素
- Angular JS:Http:get on JSON 由本地 API 创建
- 从Node.js中的活动套接字重新创建http请求和响应
- 在创建工厂服务时,return$http.post在angular中到底意味着什么
- 创建的应用程序无法通过访问http://localhost:1841/MyApp.
- JavaScript创建的表单未提交到HTTP服务器
- 我用AngularJS创建了一个单页房地产列表web应用程序,决定使用/$http服务提供数据,但没有成功.有人知道为什
- 使用$http从服务器下载的原始文件创建Blob对象
- 在php中手动创建一个HTTP响应对象,发送它,并用Javascript捕获它
- 如何创建一个使用http的工厂.Get并把它传递给angular中的多个控制器
- 如何为新创建的$resource实例更改$save() http方法?