import { Config, Provide, Scope, ScopeEnum } from '@midwayjs/decorator';
|
import { InjectEntityModel } from '@midwayjs/orm';
|
import { CoolSocket, SocketEnvent } from '@cool-midway/socket';
|
import { Socket } from 'socket.io';
|
// import { ChatUserEntity } from '../entity/user';
|
import { Repository } from 'typeorm';
|
|
import * as jwt from 'jsonwebtoken';
|
|
/**
|
* socket的事件
|
*/
|
@Provide()
|
@Scope(ScopeEnum.Singleton)
|
@CoolSocket() // 支持设置命名空间 如:@CoolSocket('/test')
|
export class SocketHandler {
|
// 获得模块的配置信息
|
@Config('module.chat.jwt')
|
jwtConfig;
|
|
public clients: Map<String, Socket>;
|
|
// @InjectEntityModel(ChatUserEntity)
|
// chatUserEntity: Repository<ChatUserEntity>;
|
|
/**
|
* 连接成功
|
* @param data
|
*/
|
@SocketEnvent()
|
async connection(socket: Socket) {
|
// console.log('socket事件', socket.id, socket.handshake.query);
|
// console.log('socket事件', socket.id, socket.handshake);
|
console.log(socket);
|
this.clients.set(socket.id, socket)
|
const { token } = socket.handshake.query;
|
console.log('-----------------------------------------------------------------------------------------------------------------------')
|
console.log(token)
|
// let tokenInfo;
|
// try {
|
// // eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
// // @ts-ignore
|
// tokenInfo = jwt.verify(token, this.jwtConfig.secret);
|
// } catch (error) {
|
// // 如果验证不通过则断开连接
|
// socket.emit('comm', '校验失效');
|
// socket.disconnect();
|
// return;
|
// }
|
socket.on('disconnect', eventSocket => {
|
this.clients.delete(socket.id)
|
console.log('断开连接');
|
});
|
|
|
socket.on('msg', msg => {
|
console.log('客户端消息', msg);
|
socket.emit('data', 're:'+msg.op +" "+ msg.deviceid)
|
|
});
|
|
socket.on('devicelog',msg => {
|
//解析终端上报的状态消息
|
|
//入库
|
|
//推送到前端
|
socket.broadcast.emit('');
|
});
|
|
}
|
|
/**
|
* 连接成功
|
* @param data
|
*/
|
@SocketEnvent()
|
async broadcast(socket: Socket) {
|
|
//推送到前端
|
socket.broadcast.emit('');
|
|
}
|
|
}
|