最近学了点 websocket 的技术知识,了解到 node.js 有相关技术——socket.io可以实现,就想着实现一个简单版本的群聊。
先看看效果图
在浏览器中打开2个窗口,访问 http://localhost:3000/socket
目录结构
node 服务器代码实现
需要安装 express 和 socket.io。
下面的代码开放了 public 文件目录为可以公开访问的文件目录,里面主要放置一些 css 文件。
app.use(express.static(path.join(__dirname, 'public')));
index.js
const express = require("express");
const app = express();
const port = 3000
var path = require('path');
var server = require('http').Server(app);
var io = require('socket.io')(server);
// var io = require('socket.io')(server, { transports: ['websocket'] })
app.use(express.static(path.join(__dirname, 'public')));
app.get('/socket', (req, res) => {
// res.send('Hello World!')
res.sendFile(__dirname + '/pages/socket/index.html');
})
io.on('connection', (socket) => {
socket.on('start', (data) => {
socket.broadcast.emit('msg', {
type: 'welcome', msg: data.user+'加入群聊' });
// io.emit('msg', { type: 'welcome', msg: data.user+'加入群聊' });
});
socket.on('msg', (data) => {
socket.broadcast.emit('msg', {
type: 'msg', msg: data.ms });
// io.emit('msg', { type: 'welcome', msg: data.ms });
});