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

标签 javascript node.js webserver websocket socket.io

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

我想使用 websockets,我发现 socket.io 非常流行,但我不确定它到底是什么。如果我错了,请纠正我,但是,这是否就像用 javascript 编写服务器并使用 node.exe 应用程序运行 javascript 文件然后服务器运行一样?人们如何找到将提供此类服务的托管服务提供商?

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

最佳答案

有几家公司将托管您的 Node 应用程序。它与您向他们提供文件并由他们为您提供文件的过渡网络主机不同。使用 Node 时,您正在编写实际的 Web 服务器。

一些流行的如下:

@Roest: A virtual server sounds intriguing. What are the pros and cons of such an approach? Also, considering how popular nodejs is how can its webserver hosting support be so limited? How do people use it?

在使用虚拟服务器时,您对在服务器上运行的内容充满信心。

优点 自由,你可以选择所有你想在你的机器上运行的软件。很多时候在使用 nodejs 时,你会希望一些自定义软件与你的应用程序一起运行。大多数情况下,这是您的数据库层,由您选择。

缺点 你必须维护它。正如@Roest 所说,这对大多数人来说并不是什么大骗局,因为这直接关系到虚拟服务器为您提供的自由,但这是您需要考虑的事情。

我认为您看到对 nodejs 的支持有限的原因是它相对较新,而且您自己设置起来非常容易。

I want to use websockets and I found socket.io to be really popular but I'm not sure exactly what it is. Correct me if I'm wrong, but, is it just like writing a server in javascript and you run the javascript file with the node.exe application and then the server is running?

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

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

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 - 简单的网络服务器,我主要将它用作命令行工具,通过 http 即时服务器文件。

Lastly, is socket.io just an extension of nodejs? Do you have to code your server in javascript when you use socket.io? Again, sorry for the very novice questions but I'm just trying to understand a few basic things before I continue. Thanks.

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

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

关于javascript - 需要一些帮助来理解 nodejs 和 socket.io,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11833609/

相关文章:

javascript - 如何检查数组中的值是否存在

javascript - 在多个数组中查找交集

javascript - 使用 Node.js 发送电子邮件时未处理的 promise 拒绝

node.js - Jade 插值 #{ } 与缓冲 =' '

node.js - 运行 npm install 时下载意外文件

javascript - Node.js 通过带有传递参数的 shell 脚本执行 python 脚本

javascript - 在 Node 中返回 Postgres 查询,服务器将无法运行

content-management-system - 带有 Joomla 的 Intranet 网站?

java - 从 Java 应用程序监控 Tomcat 服务器

python - 我在其中托管使用​​ Tornado 网络服务器开发的应用程序