概述
简单教程
服务端
依赖
"@midwayjs/socketio": "^3.3.5",
config.default.ts文件引入
import { createRedisAdapter } from '@midwayjs/socketio';
export default {
socketIO: {
adapter: createRedisAdapter({
host: '127.0.0.1',
port: 6379,
}),
path: '/socketio',
transports: ['polling', 'websocket'],
cors: {
origin: '*',
methods: ['GET', 'POST'],
},
},
}
新建文件
import {
WSController,
OnWSConnection,
Inject,
OnWSMessage,
WSEmit,
} from '@midwayjs/decorator';
import { Context } from '@midwayjs/socketio';
/**
* 测试
*/
@WSController('/')
export class HelloController {
@Inject()
ctx: Context;
// 客户端连接
@OnWSConnection()
async onConnectionMethod() {
console.log('on client connect', this.ctx.id);
console.log('参数', this.ctx.handshake.query);
this.ctx.join('fz' + this.ctx.handshake.query.fjh);
let data2 = {
id: this.ctx.id,
fj: this.ctx.handshake.query.fjh,
data: null,
xx: this.ctx.handshake.query,
};
this.ctx.emit('data', data2, '连接成功');
}
// 消息事件
@OnWSMessage('data')
@WSEmit('data')
async gotMessage(data) {
let data2 = {
id: this.ctx.id,
fj: this.ctx.handshake.query.fjh,
data: data,
xx: this.ctx.handshake.query,
};
// console.log('on data got', this.ctx.id, data2);
// this.ctx.broadcast.emit('data', data);
this.ctx.to('fz' + this.ctx.handshake.query.fjh).emit('data', data2);
// this.ctx.to('polling').emit('data', data);
return data2;
}
}
客户端
依赖
"socket.io-client": "^4.5.1",
响应逻辑逻辑
let socket =
io(import.meta.env.VITE_APP_URL_WSS + '/?fjh=' + fjh2.value + '&name=' + nane2.value, {
path: '/socketio', // 这里是客户端的 path
transports: ['websocket'],
secure: true
})
console.log(socket)
socket.on('data', msg => {
if (msg.data != null) {
let data3 = {
name: msg.xx.name,
xx: msg.data,
id: msg.id,
fj: msg.xx.fjh
}
data2.push(data3)
}
console.log('服务端消息', msg, data2)
})
socket.on('connect', () => {
console.log(socket.connected) // true
})
socket.on('disconnect', () => {
console.log(socket.connected) // false
})
发送消息逻辑
let socket =
io(import.meta.env.VITE_APP_URL_WSS + '/?fjh=' + fjh2.value + '&name=' + nane2.value, {
path: '/socketio', // 这里是客户端的 path
transports: ['websocket'],
secure: true
})
console.log(data.value, '09')
socket.emit('data',
data.value
)
}
最后
以上就是舒心魔镜为你收集整理的【node.js】Midway.js使用Socket.IO搭建即时通讯的全部内容,希望文章能够帮你解决【node.js】Midway.js使用Socket.IO搭建即时通讯所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复