node.js基于socket.io快速实现一个实时通讯应用

2020-06-17 05:39:14易采站长站整理

});

io.of("/get").on("connection", function(socket) {
socket.emit("new message", { mess: `这是get的命名空间` });
});

客户端


// index.js
const socket = io("ws://0.0.0.0:****/post");
socket.on("new message", function(data) {
console.log('index',data);
}

//message.js
const socket = io("ws://0.0.0.0:****/get");
socket.on("new message", function(data) {
console.log('message',data);
}

room

客户端


//可用于客户端进入房间;
socket.join('room one');
//用于离开房间;
socket.leave('room one');

服务端


io.sockets.on('connection',function(socket){
//提交者会被排除在外(即不会收到消息)
socket.broadcast.to('room one').emit('new messages', data);
// 向所有用户发送消息
io.sockets.to(data).emit("recive message", "hello,房间中的用户");
}

用socket.io实现一个实时接收信息的例子

终于来到应用的阶段啦,服务端用

node.js
模拟了服务端接口。以下的例子都在本地服务器中实现。

服务端

先来看看服务端,先来开启一个服务,安装

express
socket.io

安装依赖


npm install --Dev express
npm install --Dev socket.io

构建node服务器


let app = require("express")();
let http = require("http").createServer(handler);
let io = require("socket.io")(http);
let fs = require("fs");

http.listen(port); //port:输入需要的端口号

function handler(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.end(data);
});
}

io.on("connection", function(socket) {
console.log('连接成功');
//连接成功之后发送消息
socket.emit("new message", { mess: `初始消息` });

});

客户端

核心代码——index.html(向服务端发送数据)


<div>发送信息</div>
<input placeholder="请输入要发送的信息" />
<button onclick="postMessage()">发送</button>


// 接收到服务端传来的name匹配的消息
socket.on("new message", function(data) {