如何在 VPS 上安装 Node.js 框架 Express 和设置 Socket.io

你将在这篇文章中学到什么


  • 如何使用 NodeJS 版本管理器 (NVM)
  • 如何使用 NodeJS
  • 如何安装简单的 Express project
  • 如何在 Express 中设置 socket.io* 实时向客户端发送简单消息
  • 如何使用客户端 javascript 收听消息

步骤1:设置NodeJS


注意:如果您已经知道您已安装了 NodeJS v0.10.16,您可以跳过此步骤。

Node Version Manager (NVM) 是一个工具,可以帮助您在 Linux 机器上安装各种版本的 NodeJS. 为了使用 NVM,请确保安装了gitcurl

使用 SSH 连接到您的 VPS (dropplet)。

如果您没有这些安装,请使用您的系统的包管理器来安装它们,例如,在 Ubuntu 或 Debian 安装时,您会运行:

sudo apt-get install curl git

现在您必须运行 NVM 安装脚本:

1curl https://raw.github.com/creationix/nvm/master/install.sh | sh

** 重要:您现在必须退出您的盒子并使用 SSH 重新连接。

测试以确保nvm命令通过在终端键入nvm工作. 如果您没有收到command not found错误,那么您已经正确设置了NVM。

要安装 Node 的最新版本(该版本在本文中为 0.10.16),只需输入:

1nvm install 0.10.16

然后等待安装完成. 如果安装成功,您应该得到一个输出读取: 现在使用节点 v0.10.16

在终端中输入 node -v 以确保您正在使用指定的版本. 你应该得到输出: v0.10.16

步骤二:设置表达式


Express 是 Node 的 Web 应用框架,它是最小的和灵活的。为了开始使用 Express,您需要使用 NPM 来安装模块。

1npm install -g express

这将安装Express命令行工具,这将有助于创建一个基本的Web应用程序.一旦您安装了Express,请按照以下步骤创建一个空的Express项目:

1mkdir socketio-test
2
3cd socketio-test
4
5express
6
7npm install

这些命令会在我们刚刚创建的目录中创建一个空的Express项目,然后运行npm install,以获得运行应用程序所需的所有依赖性。 要测试空的应用程序,运行node app,然后导航您的浏览器到 http://yourDropletIp-or-domainName:3000。

如果你看到欢迎消息,那么你有一个基本的快递应用程序准备和运行!

请确保在继续前用 Ctrl + C 键盘命令杀死您的 VPS。

步骤 3: 在您的 Express 应用程序中安装 Socket.io


Socket.io 是一个实时的 JavaScript 库. 简而言之,它是一个 WebSocket API,将根据浏览器的能力确定正确的连接类型,无论是 AJAX 长度调查、Flash 还是简单的 WebSockets。

那么你怎么开始呢?首先你需要一个Socket.io服务器. 我们已经有一个Express服务器准备好了,等待,我们只需要在插槽库中添加它。

你的初始文件可能看起来像这样的东西:

 1{
 2  "name": "application-name",
 3  "version": "0.0.1",
 4  "private": true,
 5  "scripts": {
 6    "start": "node app.js"
 7  },
 8  "dependencies": {
 9    "express": "3.3.5",
10    "jade": "*"
11  }
12}

现在将一个新的字段添加到依赖区域:

1"socket.io": "latest",

您的结果文件应该看起来像这样的东西:

 1{
 2  "name": "application-name",
 3  "version": "0.0.1",
 4  "private": true,
 5  "scripts": {
 6    "start": "node app.js"
 7  },
 8  "dependencies": {
 9    "socket.io": "latest",
10    "express": "3.3.5",
11    "jade": "*"
12  }
13}

现在再一次运行npm install来安装插件库。

第四部分:服务器代码


现在我们已经设置了所有依赖性,我们可以开始代码! 然后在Express应用程序文件夹中打开app.js文件。

 1/**
 2 * Module dependencies.
 3 */
 4
 5var express = require('express')
 6  , routes = require('./routes')
 7  , http = require('http');
 8
 9var app = express();
10var server = app.listen(3000);
11var io = require('socket.io').listen(server); // this tells socket.io to use our express server
12
13app.configure(function(){
14  app.set('views', __dirname + '/views');
15  app.set('view engine', 'jade');
16  app.use(express.favicon());
17  app.use(express.logger('dev'));
18  app.use(express.static(__dirname + '/public'));
19  app.use(express.bodyParser());
20  app.use(express.methodOverride());
21  app.use(app.router);
22});
23
24app.configure('development', function(){
25  app.use(express.errorHandler());
26});
27
28app.get('/', routes.index);
29
30console.log("Express server listening on port 3000");

所有这些示例文件都重新组织了自动生成的代码,并添加了var io = require('socket.io').listen(server);线,告诉socket.io倾听并使用我们的Express服务器。

现在我们如何将信息传递给用户?

将下列行添加到你的app.js下面最后一行。

1io.sockets.on('connection', function (socket) {
2    console.log('A new user connected!');
3    socket.emit('info', { msg: 'The world is round, there is no up or down.' });
4});

这将每当新用户连接到服务器时发送一个新的接口消息,现在我们只需要一种方式来与客户端VPS互动。

第五部分:客户端代码


导航到 Express 应用程序内的公共/javascripts文件夹,并添加一个名为client.js的新文件,并将此代码放入其中:

1// connect to the socket server
2var socket = io.connect(); 
3
4// if we get an "info" emit from the socket server then console.log the data we recive
5socket.on('info', function (data) {
6    console.log(data);
7});

代码很简单,但它展示了你可以用 Socket.io 做什么,现在我们只需要将脚本纳入我们的主页。

导航到 Express 应用程序中的视图文件夹并打开layout.jade。Express 不会使用简单的 HTML 来渲染其页面。它使用一个名为 Jade 的模板引擎。(有关 Jade 的更多信息可以找到 这里) Jade 与简单的 HTML 相比简单而清洁。 为了添加我们的客户端脚本并添加 Socket.io 客户端库,我们需要简单地将这些添加到link(rel='stylesheet', href='/stylesheets/style.css字段以下的行:

1script(type='text/javascript', src="/socket.io/socket.io.js")
2script(type='text/javascript', src='javascripts/client.js')

确保它们在相同的入门级别上排列,不要混合卡和间隙,这将导致Jade投出错误。

返回 socketio-test 目录:

1cd socketio-test

保存布局文件并使用: node app 再次启动 Express 应用程序。

篇六:测试它


现在,再次导航您的浏览器到 http://yourDropletIp-or-domainName:3000 并打开开发人员工具控制台。您应该在日志中看到这样的东西:

1Object {msg: "The world is round, there is no up or down."}

这是从VPS直接向客户端实时发送的消息。

Submitted by: Aaron Shea
Published At
Categories with 技术
comments powered by Disqus