You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.9 KiB
86 lines
2.9 KiB
4 months ago
|
// | ------------------------------------------------------------
|
||
|
// | @版本: version 0.1
|
||
|
// | @创建人: 【Nie-x7129】
|
||
|
// | @E-mail: x71291@outlook.com
|
||
|
// | @文件描述: ws.js | 通过WebSocket建立服务
|
||
|
// | @创建时间: 2023-08-30 15:08
|
||
|
// | @更新时间: 2023-08-30 15:08
|
||
|
// | @修改记录:
|
||
|
// | -*-*-*- (时间--修改人--修改说明) -*-*-*-
|
||
|
// | =
|
||
|
// | ------------------------------------------------------------
|
||
|
|
||
|
// 引入WebSocketServer
|
||
|
import WebSocket, { WebSocketServer } from 'ws';
|
||
|
// 文件操作
|
||
|
import { createServer } from 'https';
|
||
|
import { readFileSync } from 'fs';
|
||
|
|
||
|
// = 函数名: httpWebSocket
|
||
|
// = 描述: 使用http模式建立WebSocket服务
|
||
|
// = 参数: None
|
||
|
// = 返回值: undefined
|
||
|
// = 创建人: Nier
|
||
|
// = 创建时间: 2023-08-30 15:12:57 -
|
||
|
async function httpWebSocket() {
|
||
|
// @ option - Object - 描述:webSocket配置项
|
||
|
const option = {
|
||
|
// 创建服务器 必须提供 port、server、noServer其中任意一个 否则报错
|
||
|
port:10001, // 类型:Number 服务器端口号
|
||
|
host:'10.10.10.10', // 类型:String 服务器ip(主机名)
|
||
|
backlog:50, // 类型:Number 最大等待连接队列的长度
|
||
|
// server // 类型:http.Server|https.Server 预先创建的http或https的服务器
|
||
|
// path:'message', // 只接受与此路径匹配的连接。
|
||
|
// noServer:false, // 类型:Boolean 不启用服务器模式
|
||
|
//clientTracking // 指定是否跟踪客户端
|
||
|
maxPayload:4096, // 允许的最大消息大小(以字节为单位),默认为 100 MiB(104857600 字节)。
|
||
|
}
|
||
|
const wss = new WebSocketServer(option,() => {
|
||
|
console.log(`HTTP WebSocket 已启动: ws://${option.host}:${option.port}`)
|
||
|
});
|
||
|
wss.on('connection', function connection(ws) {
|
||
|
console.log('Conn')
|
||
|
ws.on('error', console.error);
|
||
|
ws.on('message', function message(data, isBinary) {
|
||
|
wss.clients.forEach(function each(client) {
|
||
|
if (client.readyState === WebSocket.OPEN) {
|
||
|
client.send(data, { binary: isBinary });
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
ws.onclose = event => {
|
||
|
console.log('Close')
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// = 函数名: httpsWebSocket
|
||
|
// = 描述: 使用https模式建立WebSocket服务
|
||
|
// = 参数: None
|
||
|
// = 返回值: undefined
|
||
|
// = 创建人: Nier
|
||
|
// = 创建时间: 2023-08-30 15:13:30 -
|
||
|
function httpsWebSocket() {
|
||
|
const server = createServer({
|
||
|
cert: readFileSync('/path/to/cert.pem'),
|
||
|
key: readFileSync('/path/to/key.pem')
|
||
|
});
|
||
|
const wss = new WebSocketServer({ server, port: 10002 });
|
||
|
|
||
|
wss.on('connection', function connection(ws) {
|
||
|
ws.on('error', console.error);
|
||
|
|
||
|
ws.on('message', function message(data) {
|
||
|
console.log('received: %s', data);
|
||
|
});
|
||
|
|
||
|
ws.send('something');
|
||
|
});
|
||
|
}
|
||
|
|
||
|
|
||
|
export {
|
||
|
httpWebSocket,
|
||
|
httpsWebSocket
|
||
|
}
|