ajax node一对一聊天室,玩转NODE.JS(四)-搭建简单的聊天室的代码

本文介绍了如何使用Node.js和Socket.IO搭建一个简单的聊天室。首先通过npm初始化项目,安装socket.io,并在index.js中设置服务器端程序,监听8888端口。接着,创建客户端界面,利用JS实现与服务器的通信,展示聊天信息。完成这些步骤后,一个基础的聊天室就实现了。源代码可供下载,为读者提供了进一步扩展的基础。
摘要由CSDN通过智能技术生成

Nodejs好久没有跟进了,最近想用它搞一个聊天室,然后便偶遇了socket.io这个东东,说是可以用它来简单的实现实时双向的基于事件的通讯机制。我便看了一些个教程使用它来搭建一个超级简单的聊天室。

初始化项目

在电脑里新建一个文件夹,叫做“chatroom”,然后使用npm进行初始化:

$ npm init

然后根据提示以及相关信息一步一步输入,当然也可以一路回车下去,之后会在项目里生成一个package.json文件,里面的信息如下:

$ cat package.json

{

"name": "chatroom",

"version": "1.0.0",

"description": "a room which lets people chat",

"main": "index.js",

"scripts": {

"test": "nothing"

},

"author": "voidy",

"license": "ISC",

}

这个文件描述了项目的相关信息。

安装socket.io

接下来,安装socket.io:

$ npm install socket.io --save

安装Socket.IO的时候,--save参数用于保存模块依赖信息到package.json文件,安装完后,打开package.json文件会看到里面多了一项内容:

"dependencies": {

"socket.io": "^1.2.1"

}

同时Socket.IO安装在了node_modules文件夹下。

实现聊天-服务器端

首先我们来编写服务器端程序,新建文件“index.js”,在里面导入如下模块:

var http = require('http');

var socketio = require('socket.io');

var fs = require('fs');

第一行是导入http模块,先前我们已经见过了,用于创建http server。

第二行是导入socket.io模块,实现实时聊天必备的,不再赘述。

第三行是导入fs模块,用于读取文件。具体的一会你就会了解到。

通过http模块创建app,在刚刚的代码中加入如下语句:

var app = http.createServer(function(req, res) {

fs.readFile(__dirname + '/index.html', function (err, data) {

if (err) {

res.writeHead(500);

return res.end('Error loading index.html');

}

res.writeHead(200);

res.write(data);

res.end();

});

}).listen(8888);

fs.readFile()方法用于读取文件,在这里读取的是index.html文件,也就是一会即将要编写的前端聊天室的展示页面。

第8行是返回请求的状态码,第9行是返回读取到的内容给浏览器。然后这个http server使用listen方法监听8888端口。

接下来,就是使用socket.io来实现聊天的事件了。在刚刚的index.js文件的http server下面接着创建socket.io对象。

var io = socketio(app);

然后监听connection事件,当浏览器连接到此Socket.IO服务时触发该事件:

io.on('connection', function (socket) {

// 监听浏览器端的chat事件

socket.on('chat', function (data) {

console.log(data);

io.emit('sendmsg', data);

});

});

第4行用于将信息输入到后台的显示器,第5行用于将内容发送给客户端,为了知道服务器是否启动,我在后面又加了如下一句:

console.log("Server is running at http://localhost:8888")

至此,服务器端编码完成。

实现聊天-客户端

首先实现界面部分,仅仅有显示消息记录以及消息发送框,代码如下:

Socket.IO chat

* { 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; }

Send

然后需要在里面加上JS来实现与服务器端的通信,将服务器端获取的数据展示到客户端,主要代码如下:

// 连接到Socket.IO服务器

var socket = io.connect();

$(function() {

// 绑定发按钮发送消息的事件

$('#send').on('click', function() {

var data = $('#m').val();

// 创建chat事件并发送消息给服务器

// emit('event') 表示发送了一个event命令

// 使用io.on('event')接收对应事件的信息

// 所以客户端服务器端需要使用socket.on('chat')接收聊天信息

socket.emit('chat', { msg: data });

$('#m').val('');

});

});

$(function() {

// 接收消息并显示到消息记录框中

socket.on('sendmsg', function(msg) {

$('#messages').append($('

').text(msg.msg));

});

});

此时,可以执行:

$ node index.js

然后在浏览器打开localhost:8888查看效果。

至此,一个简陋的聊天室就实现了,有兴趣的朋友可以在此基础上进行扩展,实现功能更为复杂的聊天室。

项目源代码:源码下载

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值