服务端
app.js
// 引入模块
var express = require('express');
// 实例化express对象
var app = express();
// app.js页面挂载socket
require('./websocket/index');
require('./websocket/ske');
app.listen(5000, () => console.log('服务器正在5000端口号运行...'));
socket监控多个端口配置
./websocket/index
var app = require('express')();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
require('../timing/index')
// 接收客户端发送过来的数据
io.on('connection', function (socket) {
// 接收客户端传过来的数据
socket.on("typing", function (data) {
console.log(data);
// 触发广播事件 除了自己其他人都能收到
socket.broadcast.emit('Broadcasting', data);
});
});
// 向客户端发送信息(测试代码定时向客户端发送信息)
setInterval(function () {
io.emit("test1", { name: '3001' });
}, 5000);
//开启端口监听socket
server.listen(3001);
./websocket/ske
var app = require('express')();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
// 接收客户端发送过来的数据
io.on('connection', function (socket) {
});
// 向客户端发送信息(测试代码定时向客户端发送信息)
setInterval(function () {
io.emit("test2", { name: '3002' });
}, 5000);
//开启端口监听socket
server.listen(3002);
客户端
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script src="https://cdn.socket.io/socket.io-2.3.0.js"></script>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<script>
var socket = io.connect('http://192.168.1.103:3001');
var sockettwo = io.connect('http://192.168.1.103:3002');
// 获取从服务器传来的数据
socket.on('test1', (data) => {
console.log(data)
})
// 获取从服务器传来的数据
sockettwo.on('test2', (data) => {
console.log(data)
})
// 获取从服务器广播的数据(和上面的代码没有什么区别,除了名字不一样)
socket.on('Broadcasting', (data) => {
console.log(data)
})
// 向服务端发送信息
socket.emit('typing', { text: '客户端向服务端发送信息' });
</script>
</body>
</html>
注意事项
1:注意socket服务端和客户端的版本需要一致,不然会出现意想不到的bug
2:“socket.io”: “^2.3.0”
nodejs打包成exe
npm install -g pkg
pkg server.js
pkg -t win server.js
-
npm install -g pkg :全局安装pkg
-
pkg server.js : 将 api.js 编译成 api.exe 可执行文件
-
pkg -t win server.js : 上面的命令会同时编译出 linux 、windows 、mac 版的 exe,加 -t win 就可以只编译 windows 下的