我来详细讲解一下“Node.js实现简单聊天服务器”的完整攻略。
1. 安装Node.js
首先需要安装Node.js,可以去官网下载安装包安装,或者使用命令行工具,在命令行中输入以下命令:
$ sudo apt-get update
$ sudo apt-get install nodejs
安装完成后,可以通过在命令行中输入以下命令来检验是否安装成功:
$ node -v
2. 初始化项目
初始化一个项目,可以使用npm,命令如下:
$ npm init
按照提示一步步输入参数,等待初始化完成即可。
3. 安装Socket.io
安装Socket.io,命令如下:
$ npm install socket.io --save
安装完成后,可以在项目中使用Socket.io。
4. 编写代码
下面是一个简单的Socket.io聊天室例子:
//导入服务端socket.io
var io = require('socket.io')(server);
//服务端socket监听客户端socket的连接
io.on('connection', function (socket) {
console.log('a user connected');
//监听客户端socket发送的chat message事件
socket.on('chat message', function(msg){
console.log('message: ' + msg);
//使用io向所有客户端socket广播chat message事件
io.emit('chat message', msg);
});
//监听客户端socket的disconnect事件
socket.on('disconnect', function(){
console.log('user disconnected');
});
});
5. 运行项目
在终端中运行以下命令启动socket服务器:
$ node app.js
打开浏览器,访问http://localhost:3000
即可看到一个简单的聊天室页面,可以在输入框中发送消息,所有的连接到服务器的客户端都可以看到这个消息。
6. 示例
下面是一个简单的使用Socket.io实现简单聊天服务器的例子,客户端代码如下:
<!doctype html>
<html>
<head>
<title>Socket.IO chat</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body { font: 13px Helvetica, Arial; }
form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; }
form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; }
form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; }
#messages { list-style-type: none; margin: 0; padding: 0; }
#messages li { padding: 5px 10px; }
#messages li:nth-child(odd) { background: #eee; }
</style>
</head>
<body>
<ul id="messages"></ul>
<form id="chat-form">
<input id="m" autocomplete="off" /><button>Send</button>
</form>
<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script>
$(function () {
var socket = io();
//监听服务端socket发送的chat message事件
socket.on('chat message', function(msg){
$('#messages').append($('<li>').text(msg));
});
//监听表单提交事件
$('form').submit(function(e){
e.preventDefault();
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
});
</script>
</body>
</html>
服务端代码如下:
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
//指定静态资源目录
app.use(require('express').static('public'));
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
//服务端socket监听客户端socket的连接
io.on('connection', function(socket){
console.log('a user connected');
//监听客户端socket发送的chat message事件
socket.on('chat message', function(msg){
console.log('message: ' + msg);
//使用io向所有客户端socket广播chat message事件
io.emit('chat message', msg);
});
//监听客户端socket的disconnect事件
socket.on('disconnect', function(){
console.log('user disconnected');
});
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
启动服务器,访问http://localhost:3000
即可看到一个简单的聊天室页面,可以在输入框中发送消息,所有连接到服务器的客户端都可以看到这个消息。
希望我的回答能够帮到你,如有不明白的地方请随时问我。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Node.js实现简单聊天服务器 - Python技术站