Files
root 59bfc98afa feat: 在线双人五子棋(Socket.IO + Vue3 + Canvas)
- 服务端权威状态机:落子校验、四方向五连判胜、悔棋请求、认输、离线判负、交换黑白再来一局
- 断线重连:resumeToken 凭证 + localStorage,刷新/锁屏自动回到原座位
- 移动端 Canvas 棋盘:DPR 适配、触摸容差吸附、最后一手标记、胜利连子高亮
- Docker 多阶段构建,非 root + 只读根文件系统
- k8s 清单:单副本 Recreate(内存态房态)、Ingress WebSocket 超时与粘性会话注释
2026-09-10 18:17:10 +08:00

56 lines
2.3 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 部署前需要改两处:
# 1. spec.ingressClassName —— 用 `kubectl get ingressclass` 确认集群里实际的 class 名
# 2. spec.rules[].host 与 spec.tls[].hosts —— 换成你自己的域名
#
# 证书二选一:
# A) cert-manager 自动签发:在 annotations 里加
# cert-manager.io/cluster-issuer: <你的 ClusterIssuer 名>
# B) 手动导入已有证书:
# kubectl -n wuziqi create secret tls wuziqi-tls \
# --cert=fullchain.pem --key=privkey.pem
# 没有域名时删掉整段 spec.tls,并去掉 annotations 里的 force-ssl-redirect(若有),
# 改为纯 HTTP 访问;Socket.IO 在 HTTP 下也能工作,但手机网络上不如 wss 稳定。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: wuziqi
namespace: wuziqi
labels:
app: wuziqi
annotations:
# —— Socket.IO 长连接的关键三项 ——
# 默认 proxy-read-timeout 只有 60s,长连接会被 Ingress 直接掐断,
# 表现为手机每隔一分钟掉线一次。心跳间隔 25s,这里放宽到 1 小时。
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
# 关闭缓冲,避免事件被攒着不发导致落子延迟
nginx.ingress.kubernetes.io/proxy-buffering: "off"
# 显式声明 WebSocket Upgrade 的目标 Service
nginx.ingress.kubernetes.io/websocket-services: "wuziqi"
# —— 会话亲和性 ——
# 客户端 transports 为 [websocket, polling]WebSocket 不通时会回退到长轮询。
# 长轮询的握手与后续请求必须落到同一 Pod,否则会话丢失。
# replicas=1 时这几项是空操作,但一旦调大副本数就是必需的。
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "wuziqi-affinity"
nginx.ingress.kubernetes.io/session-cookie-max-age: "3600"
nginx.ingress.kubernetes.io/session-cookie-samesite: "Lax"
spec:
ingressClassName: nginx
tls:
- hosts:
- gomoku.example.com
secretName: wuziqi-tls
rules:
- host: gomoku.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: wuziqi
port:
number: 80