首先我用的是WS模块
在app/service/ws
var WebSocketServer = require('ws').Server
var wss = null
var _ws = null
module.exports = app => {
return class User extends app.Service {
* set_websocket() {
wss = new WebSocketServer({
port: 8077,//监听接口
});
wss.on('connection', function (ws) {
console.log("服务器创建链接")
_ws = ws
console.log("服务器链接成功")
})
}
* send_websocket(msg) {
_ws.send(msg)
}
}
};
然后在根目录中新建一个app.js
module.exports = app => {
app.beforeStart(function* () {
// 应用会等待这个函数执行完成才启动
const ctx = app.createAnonymousContext();
yield ctx.service.ws.set_websocket()
console.log('app.js文件执行成功')
})
}
这样的思路对不对
我的业务是微信小程序 本人新手
当客户端 发起请求支付时 请求websocket 连接
当用户成功支付时 自己的服务端有一个接口专门和微信官方服务器进行通讯验证的 当验证成功后
自己的服务端 向小程序客户端发送一条讯息
yield ctx.service.ws.send_websocket("订单已支付")
这样的 有没有大神 求帮助的
直接用 egg-socket.io 吧
试了几次 都失败了 SOCKET.IO
我觉得你用socket.io 还是要用个socket.io的client. 用原始的websocket 很麻烦的.
你的client 还要自己解析socket.io的协议.
socket.io的client在微信上面不能直接用
这个库wxapp-socket-io 是微信上面的人家做好的socket.io的client .应该比你直接用websocket方便多了.
服务端用egg-socket.io 插件也比较方便.
你用app.io.route 就会自动跟你on ,然后直接在客户端emit就行了
如,服务端
app.io.route('addMusic', app.io.controllers.music.addMusic)
客户端
socket.emit('addMusic',{music:{title:""}})
在app.io.controllers.music.addMusic里面就直接this.args 就可以得到参数了
遇到 egg-socket.io 的问题再来问吧
@z253573760 使用 https://github.com/mdluo/socket.io-client-mp ,支持 ArrayBuffer 的微信小程序 socket.io 客户端
@mdluo 你可以参考 egg-socket.io 封装一个 egg 插件,但要注意的是多进程情况下如何处理,egg-socket.io 就是干这个的。
@atian25 不是这样的。 @mdluo 封装的只是客户端,不是服务端代码。
Most helpful comment
@z253573760 使用 https://github.com/mdluo/socket.io-client-mp ,支持 ArrayBuffer 的微信小程序 socket.io 客户端