Socket.IO - 会话 ID 未知

问题描述 投票:0回答:1

你好,我用node.js socket.io 做了一个项目,用apache2 做了代理。一切正常,项目工作正常,但有时我的所有连接都会发送连接错误,消息为“会话 ID 未知”。我尝试了将服务器从 apache2 更改为 nginx 的所有方法,但它也不起作用。连接每隔 1 小时发送一次该错误消息。我该如何解决我不知道的问题。我为此工作了大约8天。我的项目进展缓慢。有人可以帮忙吗?

版本

Apache2: Apache/2.4.54 (Ubuntu)
Socket.io Server: 4.5.1
Socket.io Client: 4.5.1

Apache.conf

    <VirtualHost _default_:443>
        ServerName socket.myproject.com
        SSLEngine On
        SSLCertificateFile /etc/ssl/socket/primary.crt
        SSLCertificateKeyFile /etc/ssl/socket/private.key
        SSLCertificateChainFile /etc/ssl/socket/intermediate.crt
LoadModule authn_file_module            modules/mod_authn_file.so
LoadModule authn_core_module            modules/mod_authn_core.so
LoadModule authz_host_module            modules/mod_authz_host.so
LoadModule authz_groupfile_module       modules/mod_authz_groupfile.so
LoadModule authz_user_module            modules/mod_authz_user.so
LoadModule authz_core_module            modules/mod_authz_core.so
LoadModule headers_module               modules/mod_headers.so
LoadModule lbmethod_byrequests_module   modules/mod_lbmethod_byrequests.so
LoadModule proxy_module                 modules/mod_proxy.so
LoadModule proxy_balancer_module        modules/mod_proxy_balancer.so
LoadModule proxy_http_module            modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module        modules/mod_proxy_wstunnel.so
LoadModule rewrite_module               modules/mod_rewrite.so
LoadModule slotmem_shm_module           modules/mod_slotmem_shm.so
# User daemon
# Group daemon
Header add Set-Cookie "SERVERID=sticky.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy "balancer://nodes_polling">
    BalancerMember "http://localhost:1002"    route=prod
    ProxySet stickysession=SERVERID
</Proxy>
<Proxy "balancer://nodes_ws">
    BalancerMember "ws://localhost:1002"    route=prod
    ProxySet stickysession=SERVERID
</Proxy>
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) balancer://nodes_ws/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*) balancer://nodes_polling/$1 [P,L]
ProxyTimeout 3
    </VirtualHost>

客户

this.IO = io(AppConstants.socketBaseUrl, {
  query: { token:"blablabla...." },
  path: '/socket.io',
  withCredentials: true,
  transports: ['websocket', 'polling'],
  secure: true,
});

服务器 Node.js

const socketServer = require('socket.io')(Server, {
  transports: ['websocket', 'polling'],
  cors: {
    origin: '*',
    credentials: true,
    methods: ['GET', 'POST'],
  },
});
node.js websocket socket.io apache2 load-balancing
1个回答
0
投票

你能解决这个问题吗?有什么我可以尝试的吗?我也面临同样的情况

© www.soinside.com 2019 - 2024. All rights reserved.