flarestart / egg-websocket-plugin

A standard WebSocket plugin for egg.js
MIT License
53 stars 4 forks source link

egg3.5安装报错 #13

Open xtsh2002 opened 1 year ago

xtsh2002 commented 1 year ago

您好,我一直使用你这个插件,但eggs升级,安装的时候出现错误,请问可以解决吗?:

npm resolution error report

While resolving: egg-wechat@1.0.0 Found: egg@3.15.0 node_modules/egg egg@"^3" from the root project

Could not resolve dependency: peer egg@"^2.26.0" from egg-websocket-plugin@1.0.1 node_modules/egg-websocket-plugin egg-websocket-plugin@"*" from the root project

Fix the upstream dependency conflict, or retry this command with --force or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.

flarestart commented 1 year ago

@xtsh2002 使用 egg 3x 版本试了一下,没跑过单元测试,egg 3x 版本的某些 API 变动了,需要花一些时间来适配

xtsh2002 commented 1 year ago

谢谢回复,希望你能在百忙之中维护一下这个插件,我用 --force的方式安装了,最近试试行不行

flarestart commented 1 year ago

@xtsh2002 兼容了一下 egg 3.x,可安装新的版本看看 https://www.npmjs.com/package/egg-websocket-plugin/v/3.0.0-beta.0

xtsh2002 commented 4 months ago

你好,你这个能否实现会议模式的直播?包括多人同时开启摄像头直播、观看端看到多人的视频流以及连麦功能,持多人同时推流到同一个 RTMP 应用(App)

flarestart commented 4 months ago

@xtsh2002 视频流推荐使用 WebRTC 或其他提供视频流的三方服务,不建议使用 WebSocket 传输视频流

xtsh2002 commented 4 months ago

非常感谢您的回复,现在我已经写好了代码,用node.js写的,主播端是这样写的:`let res = await app.model.Live.create({ title, cover, key, user_id })

    // 生成签名
    let sign = this.sign(key)
    ctx.apiSuccess({
        data:res,
        sign
    })
}
 // 生成签名,key可以理解为房间号
 sign(key){
    let { ctx,app } = this
    const secret = app.config.mediaServer.auth.secret
    let expire = parseInt((Date.now() + 100000000) / 1000)
    let hashValue = md5(`/live/${key}-${expire}-${secret}`)
    return `${expire}-${hashValue}`
}`

观看端 得到该直播签名的方法是:(后端) `// 生成签名 let sign = null

    // 直播未结束
    if(live.status !== 3){
        sign = this.sign(live.key)
    }

    ctx.apiSuccess({
        data:live,
        sign
    })`

这样,前端部分,观看端得到的拉流地址: `$H.get('/live/read/' + id.value).then(res=>{ detail.value = res.data

        sign.value = res.sign
        firstLoad.value = true
        console.log('拉流地址:'+url.value)

    })

const url = computed(()=>{ if(detail.value.key == '' || sign.value == ''){ return '' } return ${$C.livePlayBaseUrl}/live/${detail.value.key}.flv?sign=${sign.value} )

`

我想问的是,我如果用主播端的这个签名放到OBS上去直播,那么观看端还能不能看到直播?之前我测试的是,用主播的签名到到obs上配置:主播端:`推流(主播):

rtmp://127.0.0.1:1980/live/QDyg0CXvEdxZ9LgHlCkf?sign=1678285979-1d15d26330532822c31fa6254c17b759`

我在前端,写死一个url推流地址是:

http://127.0.0.1:1981/live/QDyg0CXvEdxZ9LgHlCkf.flv?sign=1678285979-1d15d26330532822c31fa6254c17b759

这样是可以看到直播的,这个签名和主播端是一样,但是,现在我写好了前端,我如果让用户去拉流的话,每个用户每次的签名是不一样的,这样不知道还能否看到obs的直播?多谢