需要一些帮助理解nodejs和socket.io

时间:2012-08-06 18:10:37

标签: javascript node.js webserver websocket socket.io

对于这个相当无知的问题感到抱歉,但我对这两种技术感到有些困惑。我在C#中编写了一个使用Fleck的网络服务器,一切都很好但我意识到我可能找不到运行.NET应用程序的托管服务提供商。

我想使用websockets,我发现socket.io非常受欢迎,但我不确定它究竟是什么。如果我错了,请纠正我,但是,这就像在javascript中编写服务器并运行带有node.exe应用程序的javascript文件然后服务器正在运行?人们如何找到能够提供这种服务的托管服务提供商?

最后,socket.io只是nodejs的扩展吗?使用socket.io时,是否必须使用javascript对服务器进行编码?再一次,对于非常新手的问题感到抱歉,但我只想在继续之前了解一些基本的东西。感谢。

2 个答案:

答案 0 :(得分:3)

有一些公司将托管您的节点应用程序。它与您为其提供文件并为您提供文件的过渡Web主机不同。使用节点时,您正在编写实际的Web服务器。

一些受欢迎的人在下面:

  

@Roest:虚拟服务器听起来很有趣。优缺点都有什么   这样的方法?另外,考虑如何流行的nodejs是怎样的   它的网络服务器托管支持如此有限?人们如何使用它?

使用虚拟服务器时,您在服务器上运行时会下雨。

<强>赞成 自由,你可以选择你想要在你的机器上运行的所有软件。很多时候,在使用nodejs时,您需要在应用程序旁边运行一些自定义软件。大多数情况下,这是您选择的数据库层。

<强>缺点 你必须保持它。就像@Roest所说的那样,对于大多数人来说,这并不是什么好事,因为这直接关系到虚拟服务器给你的自由,但这是你需要考虑的事情。

我认为你认为对nodejs支持有限的原因是因为它相对较新,而且很容易自己设置。

  

我想使用websockets,我发现socket.io非常受欢迎   但我不确定它究竟是什么。如果我错了,请纠正我,但是,是的   就像在javascript中编写服务器并运行javascript一样   文件与node.exe应用程序,然后服务器正在运行?

这几乎就是nodejs,或者至少是你如何使用它。 Nodejs本身就是运行在服务器上的Google V8 javascript引擎,还有大量的库和C绑定,允许您以V8引擎不允许的方式与您的服务器进行交互。

这是nodejs中的网络服务器示例(A 非常有限的一个)

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

它只响应Hello World到每个请求,并始终返回200状态代码。

从这样的东西变成一个简单的文件服务器是相当容易和快速的,但是有些人已经为你解决了这个问题。

http://expressjs.com/ - 非常强大的网络服务器,但仍然为您提供了很多自由。 https://github.com/nodeapps/http-server - 简单的Web服务器,我主要使用它作为命令行工具来立即通过http服务器文件。

  

最后,socket.io只是nodejs的扩展吗?你需要编码吗?   你使用socket.io时你的服务器在JavaScript中?再次,抱歉   非常新手的问题,但我只是想了解一些基本的   我继续前的事情。感谢。

socket.io among many others是nodejs的一个模块。根据您对扩展名的定义,可能使用错误的单词。大多数时候使用socket.io你将使用现有的http服务器,然后使用socket.io扩展或包装你的服务器。我写了一篇之前的explanation of how nowjs does this。我的猜测是socket.io非常相似。

要回答大部分问题:是的,您仍然会在javascript中编写代码。您将只使用socket.io API。

答案 1 :(得分:0)

@travis已经介绍了有关node和socket.io

的所有信息

我只是想说你不必购买专用于节点的special主机。

使用Ubuntu

在VPS上托管

My game

我觉得部署和维护非常简单。有一个Ubuntu包,instalation需要四行复制/粘贴

https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

ps:我没有使用socket.io,而是使用einaros/ws库,我发现它不那么夸张了。