【问题标题】:Browser creates connection to websocket repeatedly - socket.io浏览器反复创建到 websocket 的连接 - socket.io
【发布时间】:2018-12-23 11:31:07
【问题描述】:

我正在创建一个 socket.io 和 node.js 服务器,它说有很多连接(每隔几分钟)。它正在创建一个新的 id,它可能会干扰使用该 id 的其他代码。

服务器代码:

var express = require('express');

var app = express();

var server = app.listen(3000);

app.use(express.static('public'));

var socket = require('socket.io');

var io = socket(server);

io.sockets.on('connection', newConnection);

function newConnection(socket) {
    console.log('new connection', socket.id);
}

在控制台中,运行时:

new connection 12naA3AGFfkjDPdnAAAM
new connection d_UeGFDAhsl401vFAAAN
new connection xBCBtiLMNOVX37-KAAAO
new connection RwmKzrVOGWRYeXNPAAAP
new connection 5NZ9WZ1-_k27brq5AAAQ
new connection QEbPMwPW69RYT15CAAAR
new connection 7qrEvvRYpAF0Yw1dAAAS
new connection -rV1aIgwrnPtZduyAAAT
new connection HUTJO5P1Z-Cg4iAjAAAU
new connection aPXmFpIu029CbUzZAAAV
new connection EkGupV-aaU5ePuCyAAAW
new connection E56CnnEXDryhFPGeAAAX

我根本不刷新页面。如何阻止服务器多次连接?

【问题讨论】:

  • 我可能猜到 socket.io 无法检索存储在浏览器中的套接字 id,并且浏览器会反复尝试重新连接。那么您是否尝试过附加 cookie 解析器? app.use(require('cookie-parser')())
  • 我试过了,它说 Error: Cannot find module 'cookie-parser'
  • 这是一个包。安装怎么样? (:npm i --save cookie-parser
  • 你成功了吗? (:
  • 目前看来工作正常。

标签: node.js server socket.io


【解决方案1】:

我可能猜到socket.io 无法检索存储在浏览器cookie 存储中的套接字id

当浏览器在101 Switching Protocols 之后尝试重新连接时,它会发送 cookie,但后端方不会从标头中解析它。结果 socket.io 无法将 browser 提供的 idmemory 中的 id 进行比较。

尝试附加cookie-parser:

app.use(require('cookie-parser')());

【讨论】:

    猜你喜欢
    • 2013-01-11
    • 2018-09-11
    • 2013-12-04
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 2014-10-06
    • 2014-07-20
    • 2016-07-22
    相关资源
    最近更新 更多