实现步骤
本地下载并安装node js,点击跳转至node官网下载地址
本人又安装了yarn来替换npm的使用,点击跳转至yarn官网地址
在磁盘中新建文件夹(这里文件名为:L.Socket.IO.Server)
在文件夹下,新建package.json文件,编写内容如下
- 除了dependencies外其他可自定义
- dependencies的版本依赖可根据官网版本填写,当前版本配置如下
{
"name": "socket-io-server",
"version": "0.0.1",
"description": "socket io 服务器",
"dependencies": {
"node-static": "^0.7.11",
"socket.io": "^2.3.0"
}
}
- 新建server.js文件(也可自定义名称,启动时会用到该名称),编写内容(参照官网demo编写的)
- 这里使用的端口号为8050,可自行修改
const os = require('os');
const static = require('node-static');
const http = require('http');
const file = new(static.Server)();
// 创建服务,使用 node server.js指令启动服务
const app = http.createServer(function(req, res) {
file.serve(req, res);
}).listen(8050);
// 侦听Socket 8050端口
const io = require('socket.io').listen(app);
// 客户端接入
io.sockets.on('connection', (socket) => {
console.log('有新用户接入,socket id:' + socket.id);
// 接收客户端的消息
socket.on('message', function(message) {
console.log('推送 -> 接收到客户端发送信息的请求,消息内容: ', message);
// for a real app, would be room-only (not broadcast)
socket.emit('message', message);
// socket.broadcast.emit('message', message);
});
// 创建或加入房间
socket.on('create or join', function(room) {
console.log('接收到客户端创建或加入房间的请求,房间名称: ' + room);
var clientsInRoom = io.sockets.adapter.rooms[room];
var numClients = clientsInRoom ? Object.keys(clientsInRoom.sockets).length : 0;
console.log('房间:' + room + ' ,当前有: ' + numClients + ' 用户');
// 创建房间
if (numClients === 0) {
console.log('该用户 socket.id:' + socket.id + ' 创建房间:' + room);
socket.join(room);
socket.emit('created', room, socket.id);
}
// 加入房间
else if (numClients === 1) {
console.log('该用户 socket.id:' + socket.id + ' 加入房间:' + room);
// 通知已在房间的用户有新用户要加入
io.sockets.in(room).emit('join', room);
// 通知该新用户加入成功
socket.join(room);
socket.emit('joined', room, socket.id);
// 通知已在房间的用户 新用户加入成功
io.sockets.in(room).emit('ready');
}
// 房间满了,默认2个
else {
socket.emit('full', room);
}
});
socket.on('error', function(error) {
console.log('error:' + error);
})
});
- 新建client_index.html文件(也可以自定义名称),编写内容
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Socket io client</title>
</head>
<body>
<button onclick="sendMessage()">发送</button>
</body>
<script src='/socket.io/socket.io.js'></script>
<script>
//与服务端建立socket连接
const socket = io.connect();
// 监听消息
socket.on('message', (msg) => {
console.log('client on message:' + msg);
})
// 发送消息
var sendMessage = () => {
console.log('发送消息');
socket.emit('message', 'test msg');
}
</script>
</html>
-
打开文件夹,在浏览器头输入cmd打开当前目录的命令窗口(图2)
- 使用yarn指令安装依赖
yarn install
- 使用node指令启动服务(图3)
node server.js
- 打开google浏览器预览效果(图4)
- 输入地址:http://127.0.0.1:8050/Client_index.html,回车打开界面
自此Socket IO服务器搭建完成,并能够进行通信
最终文件目录展示(图5)
-
其中 README.en.md 和 README.md是git的文件,可忽略
- 如果嫌CMD启动Socket IO服务器麻烦,可以新建.bat文件,编写内容如下,双击批处理文件就能启动Socket IO服务器
@echo off
echo ------------------------/
echo "start socket io"
echo ------------------------/
start /d "E:\L\L.Socket.IO.Server" node server.js
exit