在用egg-socket时,遇到了一点问题,麻烦懂的老哥们看下
发布于 6 年前 作者 dengnan123 4922 次浏览 来自 问答

前端控制台一直报错如下: image.png 后台这边也报错 image.png

2 回复

文档里面是这样的

框架是以 Cluster 方式启动的,而 socket.io 协议实现需要 sticky 特性支持,否则在多进程模式下无法正常工作。

由于 socket.io 的设计,在多进程中服务器必须在 sticky 模式下工作,故需要给 startCluster 传递 sticky 参数。

修改 package.json 中 npm scripts 脚本:

{
  "scripts": {
    "dev": "egg-bin dev --sticky",
    "start": "egg-scripts start --sticky"
  }
}

我是启动参数是这样

    "start": " ets && tsc -p tsconfig.json && egg-scripts start --daemon --title=egg-server-ts_api",
    "stop": "egg-scripts stop --title=egg-server-ts_api",
    "restart": "egg-scripts stop --title=egg-server-ts_api && egg-scripts start --daemon --title=egg-server-ts_api",
    "dev": "egg-bin dev -r egg-ts-helper/register",

是不是我需要在 dev 里面加上 这段参数 egg-bin dev --sticky

https://github.com/eggjs-community/demo-egg-socket.io

记得先启动 redis,然后再跑示例。

# Redis
docker-compose -f docker-compose.dev.yml up -d

# Egg.js app
npm run dev
回到顶部