我正在尝试使用Laravel和Echo构建实时游戏。
这是多人游戏,每走一步,我都需要更新两位玩家的得分。
一种明显的解决方案是将请求发送到后端以及后端触发事件,该事件会更新游戏专用频道上所有用户的得分。
在这种情况下,第二种解决方案对于Laravel Echo来说很奇怪,它从这样的前端部分触发事件:
{ ChildProcessError: `convert /tmp/u-v1XVunSvidhWiZ1pTozaZ4JbE9Y2-0.jpg -thumbnail 200x200^ -gravity center -extent 200x200 /tmp/u-v1XVunSvidhWiZ1pTozaZ4JbE9Y2-0.jpg_200` failed with code 1
at ChildProcess.<anonymous> (/user_code/node_modules/child-process-promise/lib/index.js:132:23)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:920:16)
at Socket.<anonymous> (internal/child_process.js:351:11)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at Pipe._handle.close [as _onclose] (net.js:509:12)
name: 'ChildProcessError',
code: 1,
...
stdout: '',
stderr: 'convert: unrecognized option `-gravity center\' @ error/convert.c/ConvertImageCommand/1722.\n' }
这似乎不是最佳做法,对吧?
因此,第一个解决方案有一个缺点,它将请求发送到后端并等待响应,这对于游戏应用程序是否足够快?
问题是这种情况下哪种解决方案更好?
答案 0 :(得分:1)
我将使用套接字和Redis订阅发布/订阅事件,本文反映了我的意思。
https://medium.com/@adnanxteam/how-to-use-laravel-with-socket-io-e7c7565cc19d