怎样实现安装Node.js并启动本地服务
这次给大家带来怎样实现安装Nodejs并启动本地服务,实现安装Nodejs并启动本地服务的注意事项有哪些,下面就是实战案例,一起来看一下。
1、下载安装包:
下载地址:https://nodejsorg/en/download/,根据自己电脑的配置下载相应的windows64位安装包,下载完成后,进行安装。
2、检查是否安装成功
安装完成后,打开命令行窗口,检查是否安装成功,如下图所示,键入node -v出现nodejs的版本,键入npm -v出现npm的版本,说明两者均已安装成功。
3、配置环境变量
由于我的电脑之前安装过nodejs,所以需要检测一下是否配置了环境变量,打开命令行,输入命令“path”,输出结果中可以看到环境变量已经包含了E:\nodejs\
4、创建一个应用
在创建应用“Hello World”前,先了解一下nodejs应用由哪几部分组成:
引入required模块:我们可以使用 require 指令来载入 Nodejs 模块。
接收请求与响应请求:服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。
下面开始创建nodejs应用:
(1)引入require模块
我们使用 require 指令来载入 http 模块,并将实例化的 HTTP 赋值给变量 http,实例如下:
var http = require("http");(2)创建服务器
接下来我们使用httpcreatServer()方法创建服务器,并使用listen()方法绑定8080端口。函数通过request,response参数来接收和响应数据。实例如下:
var http = require('http');
httpcreateServer(function (request, response) {
// 发送 HTTP 头部
// HTTP 状态值: 200 : OK
// 内容类型: text/plain
responsewriteHead(200, {'Content-Type': 'text/plain'});
// 发送响应数据 "Hello World"
responseend('Hello World\n');
})listen(8080);
// 终端打印如下信息
consolelog('Server running at http://127001:8080/');使用node命令执行以上代码,结果如下图:
打开浏览器访问http://localhost:8080/,可以看到写着”Hello World”的网页,如下图:
相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!
推荐阅读:
怎样操作vue中$emit 与$on父子与兄弟组件通信
如何使用JS事件绑定、事件流模型
前面已经学习了WebSocket API,包括事件、方法和属性。详情:WebSocket(二)--API WebSocket是基于事件驱动,支持全双工通信。下面通过三个简单例子体验一下。
简单开始
1安装node。/
2安装ws模块
ws:是nodejs的一个WebSocket库,可以用来创建服务。
3serverjs
在项目里面新建一个serverjs,创建服务,指定8181端口,将收到的消息log出来。
var WebSocketServer = require('ws')Server,
wss = new WebSocketServer({ port: 8181 });
wsson('connection', function (ws) {
consolelog('client connected');
wson('message', function (message) {
consolelog(message);
});
});
4建立一个clienthtml。
在页面上建立一个WebSocket的连接。用send方法发送消息。
var ws = new WebSocket("ws://localhost:8181");
wsonopen = function (e) {
consolelog('Connection to server opened');
} function sendMessage() {
wssend($('#message')val());
}
页面:
View Code
运行之后如下,服务端即时获得客户端的消息。
模拟股票
上面的例子很简单,只是为了演示如何运用nodejs的ws创建一个WebSocket服务器。且可以接受客户端的消息。那么下面这个例子演示股票的实时更新。客服端只需要连接一次,服务器端会不断地发送新数据,客户端收数据后更新UI页面如下,有五只股票,开始和停止按钮测试连接和关闭。
服务端:
1模拟五只股票的涨跌。
var stocks = { "AAPL": 950, "MSFT": 500, "AMZN": 3000, "GOOG": 5500, "YHOO": 350}function randomInterval(min, max) { return Mathfloor(Mathrandom() (max - min + 1) + min);
}var stockUpdater;var randomStockUpdater = function() { for (var symbol in stocks) { if(stockshasOwnProperty(symbol)) { var randomizedChange = randomInterval(-150, 150); var floatChange = randomizedChange / 100;
stocks[symbol] += floatChange;
}
} var randomMSTime = randomInterval(500, 2500);
stockUpdater = setTimeout(function() {
randomStockUpdater();
}, randomMSTime);
}
randomStockUpdater();
2连接建立之后就开始更新数据
wsson('connection', function (ws) { var sendStockUpdates = function (ws) { if (wsreadyState == 1) { var stocksObj = {}; for (var i = 0; i < clientStockslength; i++) { var symbol = clientStocks[i];
stocksObj[symbol] = stocks[symbol];
} if (stocksObjlength !== 0) { wssend(JSONstringify(stocksObj));//需要将对象转成字符串。WebSocket只支持文本和二进制数据
consolelog("更新", JSONstringify(stocksObj));
}
}
} var clientStockUpdater = setInterval(function () {
sendStockUpdates(ws);
}, 1000);
wson('message', function (message) { var stockRequest = JSONparse(message);//根据请求过来的数据来更新。
consolelog("收到消息", stockRequest);
clientStocks = stockRequest['stocks'];
sendStockUpdates(ws);
});
客户端:
建立连接:
var ws = new WebSocket("ws://localhost:8181");
onopen直接只有在连接成功后才会触发,在这个时候将客户端需要请求的股票发送给服务端。
var isClose = false; var stocks = { "AAPL": 0, "MSFT": 0, "AMZN": 0, "GOOG": 0, "YHOO": 0
}; function updataUI() {
wsonopen = function (e) {
consolelog('Connection to server opened');
isClose = false; wssend(JSONstringify(stock_request));
consolelog("sened a mesg");
} //更新UI
var changeStockEntry = function (symbol, originalValue, newValue) { var valElem = $('#' + symbol + ' span');
valElemhtml(newValuetoFixed(2)); if (newValue < originalValue) {
valElemaddClass('label-danger');
valElemremoveClass('label-success');
} else if (newValue > originalValue) {
valElemaddClass('label-success');
valElemremoveClass('label-danger');
}
} // 处理受到的消息
wsonmessage = function (e) { var stocksData = JSONparse(edata);
consolelog(stocksData); for (var symbol in stocksData) { if (stocksDatahasOwnProperty(symbol)) {
changeStockEntry(symbol, stocks[symbol], stocksData[symbol]);
stocks[symbol] = stocksData[symbol];
}
}
};
}
updataUI();
运行效果如下:只需要请求一次,数据就会不断的更新,效果是不是很赞,不用轮询,也不用长连接那么麻烦了。文章末尾会附上所有源码。
(美股的涨跌和A股的颜色是反的,即红跌绿涨)
实时聊天
上面的例子是连接建立之后,服务端不断给客户端发送数据。接下来例子是一个简单的聊天室类的例子。可以建立多个连接。
1安装node-uuid模块,用来给每个连接一个唯一号。
2服务端消息发送
消息类型分notification和message两种,前者是提示信息,后者是聊天内容。消息还包含一个id、昵称和消息内容。在上一节有学习到readyState有四个值,OPEN表示连接建立可以发送消息。如果页面关闭了,为WebSocketCLOSE。
function wsSend(type, client_uuid, nickname, message) { for (var i = 0; i < clientslength; i++) { var clientSocket = clients[i]ws; if (clientSocketreadyState === WebSocketOPEN) {
clientSocketsend(JSONstringify({ "type": type, "id": client_uuid, "nickname": nickname, "message": message
}));
}
}
}
3服务端处理连接
每新增加一个连接,都会发送一条匿名用户的加入的提示消息,如果消息中带有“/nick” 认为这一个修改昵称的消息。然后更新客户端的昵称。其他都会当做聊天消息处理。
wsson('connection', function(ws) { var client_uuid = uuidv4(); var nickname = "AnonymousUser" + clientIndex;
clientIndex += 1;
clientspush({ "id": client_uuid, "ws": ws, "nickname": nickname });
consolelog('client [%s] connected', client_uuid); var connect_message = nickname + " has connected"; wsSend("notification", client_uuid, nickname, connect_message);
consolelog('client [%s] connected', client_uuid);
wson('message', function(message) { if (messageindexOf('/nick') === 0) { var nickname_array = messagesplit(' '); if (nickname_arraylength >= 2) { var old_nickname = nickname;
nickname = nickname_array[1]; var nickname_message = "Client " + old_nickname + " changed to " + nickname; wsSend("nick_update", client_uuid, nickname, nickname_message);
}
} else {
wsSend("message", client_uuid, nickname, message);
}
});
处理连接关闭:
var closeSocket = function(customMessage) { for (var i = 0; i < clientslength; i++) { if (clients[i]id == client_uuid) { var disconnect_message; if (customMessage) {
disconnect_message = customMessage;
} else {
disconnect_message = nickname + " has disconnected";
} wsSend("notification", client_uuid, nickname, disconnect_message);
clientssplice(i, 1);
}
}
};
wson('close', function () {
closeSocket();
});
4客户端
没有启动时,页面如下,change按钮用来修改昵称。
View Code
js:
//建立连接
var ws = new WebSocket("ws://localhost:8181"); var nickname = "";
wsonopen = function (e) {
consolelog('Connection to server opened');
} //显示
function appendLog(type, nickname, message) { if (typeof message == "undefined") return; var messages = documentgetElementById('messages'); var messageElem = documentcreateElement("li"); var preface_label; if (type === 'notification') {
preface_label = "<span class=\"label label-info\"></span>";
} else if (type == 'nick_update') {
preface_label = "<span class=\"label label-warning\"></span>";
} else {
preface_label = "<span class=\"label label-success\">"
+ nickname + "</span>";
} var message_text = "<h2>" + preface_label + " "
+ message + "</h2>";
messageEleminnerHTML = message_text;
messagesappendChild(messageElem);
} //收到消息处理
wsonmessage = function (e) { var data = JSONparse(edata);
nickname = datanickname;
appendLog(datatype, datanickname, datamessage);
consolelog("ID: [%s] = %s", dataid, datamessage);
}
wsonclose = function (e) {
appendLog("Connection closed");
consolelog("Connection closed");
} //发送消息
function sendMessage() { var messageField = documentgetElementById('message'); if (wsreadyState === WebSocketOPEN) {
wssend(messageFieldvalue);
}
messageFieldvalue = '';
messageFieldfocus();
} //修改名称
function changName() { var name = $("#name")val(); if (wsreadyState === WebSocketOPEN) {
wssend("/nick " + name);
}
}
运行结果:
页面关闭之后,连接马上断开。
这种实时响应的体验简直不能太爽,代码也清爽了,前端体验也更好,客户端不用一直发请求,服务端不用等着被轮询。
小结:上面例子的代码都很好理解,接下来学习WebSocket协议。
在linux中安装nodejs方法如下:
1、去官网下载和自己系统匹配的文件:
通过 uname -a 命令查看到我的Linux系统位数是64位(备注:x86_64表示64位系统, i686 i386表示32位系统),如图
故下载一下红色框中文件 ,版本为v6100
2、下载下来的tar文件上传到服务器并且解压,然后通过建立软连接变为全局;
1)上传服务器可以是自己任意路径,目前我的放置路径为 cd /app/software/
2)解压上传(解压后的文件我这边将名字改为了nodejs,这个地方自己随意,只要在建立软连接的时候写正确就可以)
① tar -xvf node-v6100-linux-x64tarxz
② mv node-v6100-linux-x64 nodejs
③确认一下nodejs下bin目录是否有node 和npm文件,如果有执行软连接,如果没有重新下载执行上边步骤;
3)建立软连接,变为全局
①ln -s /app/software/nodejs/bin/npm /usr/local/bin/
②ln -s /app/software/nodejs/bin/node /usr/local/bin/
4)最后一步检验nodejs是否已变为全局
在Linux命令行node -v 命令会显示nodejs版本,说明安装成功
0条评论