你将在这篇文章中学到什么
- 如何使用 NodeJS 版本管理器 (NVM)
- 如何使用 NodeJS
- 如何安装简单的 Express project
- 如何在 Express 中设置 socket.io* 实时向客户端发送简单消息
- 如何使用客户端 javascript 收听消息
步骤1:设置NodeJS
注意:如果您已经知道您已安装了 NodeJS v0.10.16,您可以跳过此步骤。
Node Version Manager (NVM) 是一个工具,可以帮助您在 Linux 机器上安装各种版本的 NodeJS. 为了使用 NVM,请确保安装了git
和curl
。
使用 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直接向客户端实时发送的消息。