【问题标题】:socket.io server keeps getting connection event but client side never connectssocket.io 服务器不断收到连接事件,但客户端从不连接
【发布时间】:2021-01-19 08:54:17
【问题描述】:

我在节点项目中有以下客户端代码

const openSocket = require('socket.io-client');

const socket = openSocket('http://localhost:2345');

console.log(socket.connected,socket.id)

socket.on('connect', function () { console.log('connect') });
socket.on('event', function (data) { console.log('event') });
socket.on('error', function (error) { console.log('error') });
socket.on('disconnect', function () { console.log('disconnect') });
socket.on('connection', (socket) => { console.log('connection') })
socket.on('fdaTrigger', (data) => { console.log('fdaTrigger') })

在服务器端,我有 socket.io 在端口 2345 上运行

const io = require('socket.io')(server, {
  perMessageDeflate: false,
  pingInterval: 10000,
  pingTimeout: 5000,
});
var debug = require('debug')('socket.io');
var assetCounter = -1;
io.on('connection', function (socket) {
  assetCounter = -1;
  debug('Started');
  console.log('Got a connection', socket.connected, socket.id);
})

服务器上每隔几秒就会触发一次连接事件,但我的客户端拒绝连接。当我停止运行客户端代码时,连接停止,所以它正在连接但客户端没有连接。任何见解将不胜感激。

【问题讨论】:

  • 我觉得这个问题令人困惑,“......它正在连接但客户端没有连接......”?你能澄清一下吗?
  • 顺便说一句。如果您的客户端与服务器在同一个域中提供服务,则不必指定 url.. 所以您可以使用 const io = require('socket.io-client');常量套接字 = io(); ...先试试这个
  • @kerim092 连接事件未在客户端触发。但连接事件不断被触发,每隔几秒
  • 更新:问题是由于版本差异。听“connect_error”确实给出了日志

标签: javascript node.js socket.io


【解决方案1】:

试试下面的代码

客户端

const openSocket = require('socket.io-client');
const socket = openSocket('http://localhost:2345', {transports: ['websocket']});
setTimeout(() => {
  console.log(socket.connected,socket.id)
}, 100)
socket.on('connect', function () { console.log('connect') });
socket.on('event', function (data) { console.log('event') });
socket.on('error', function (error) { console.log('error') });
socket.on('disconnect', function () { console.log('disconnect') });
socket.on('connection', (socket) => { console.log('connection') })
socket.on('fdaTrigger', (data) => { console.log('fdaTrigger') })

服务器端

const server = require("http").createServer(app);
const io = require('socket.io')(server, {
   perMessageDeflate: false,
   pingInterval: 10000,
   pingTimeout: 5000,
});
var debug = require('debug')('socket.io');
var assetCounter = -1;
io.on('connection', function (socket) {
   assetCounter = -1;
   debug('Started');
   console.log('Got a connection', socket.connected, socket.id);
})
const port = 2345;
server.listen(port, () => console.log(`Listening on port ${port}`));

【讨论】:

    猜你喜欢
    • 2018-02-09
    • 2021-08-02
    • 1970-01-01
    • 2017-07-17
    • 2018-07-07
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    相关资源
    最近更新 更多