nodejs实现局域网聊天通信
介绍
这几天比较轻松,好长时间没有用node做效果了,所有就做了一个群聊天通信的效果,用的是soctetio
效果图
搭建web服务器
app.js
//引入核心模块const http = require("http");//自己的模块const express = require("./express");//创建一个服务const server = http.createServer(express);//监听服务端口server.listen(9999,()=>{ console.log("服务端已经启动,请访问 http://localhost:9999");});
express.js
const url = require("url");const fs = require("fs");function express(req,res){ //获取用户响应的信息同时转换URL对象 var urlObj = url.parse(req.url); //读取用户响应路劲 var filePath = "./user"+urlObj.pathname; var content = "路劲不对,正确的是index.html" //判断读文件existsSync if(fs.existsSync(filePath)){ content = fs.readFileSync(filePath); } //给服务端发出响应同时将二进制转换成toString res.end(content.toString()); }//导出 module.exports = express;
index.html
聊天系统
这样我们一个简单的web服务器就搭建完毕了
客户端服务搭建与服务端通信
效果
首先我们要引入socketio
app.js
var io = require('socket.io')(server);
接下来我们要建立服务端socket请求连接
io.on('connection', function(socket){ console.log('a user connected');});
有了建立连接必然有断开连接
//断开连接socket.on('disconnect', function(){ console.log('user disconnected');});
下面我们自己创建一个js文件,我创建了一个index.js,用来写客户端建立连接的代码
//客户端建立连接 var socket = io();
在通讯的时候我们必须要在HTML里面引入下面2个js文件,一个是自己创建的,一个是socketio的
效果
这做完这些以后,我们的通信就成功了
完善
首先我们先做一下客户端向服务端发送请求
我们需要在客户端写一个触发事件,当事件触发,服务端就会接收到这个事件
效果
在这之前我们需要引入jquery.js
HTML页面
index.js
$('form').submit(function(){ //触发事件 socket.emit('chat message', $('#m').val()); //情况文本中的内容 $('#m').val(''); //阻止事件默认行为 return false;});
服务端接收事件
app.js
//接收客户端的信息socket.on('chat message', function(msg){ console.log('message: ' + msg);});
接下来服务端接收到客户端发来的请求后在返回到客户端
效果
首先我们需要将服务端的数据广播到客户端去
app.js
//将服务端的消息广播到客户端socket.broadcast.emit("guangbo",msg);
接下来我们客户端需要接收服务端广播出来的数据
index.js
//接收服务端发来的消息socket.on('guangbo', function(msg){ $('#messages').append($('
').text(msg));}); 这样我们的一个简单的群聊天功能就实现了,想要加好看的效果可以自己家
完整代码
想要完整代码的朋友可以去我的GitHub上面去看
朋友们看都看完了,也不再这一点上面,不要吝啬自己的点击,帮忙点赞和收藏谢谢!