在nodejs socket.io中显示连续连接消息

Posted

技术标签:

【中文标题】在nodejs socket.io中显示连续连接消息【英文标题】:Show continuous connection message in nodejs socket.io 【发布时间】:2019-01-12 21:07:17 【问题描述】:

我正在尝试使用 laravel 开发一个实时聊天应用程序。我面临一个问题。当我运行“node index.js”时,命令提示符中不断显示“已建立连接”消息。

我的 index.js 文件是:

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);

server.listen(3000);
app.get('/', function(request, response)
    response.sendFile(__dirname+ '/index.html');        
);

io.on('connection', function(socket)
    console.log('A connection has made');
    // socket.on('chat.message', function(message)
    //  io.emit('chat.message', message);
    // );
);

我的 index.html 页面是:

<!DOCTYPE html>
<html>
    <head>
        <title>Live Chat</title>
    </head>
    <body>
        <div class="container" id="chat">
            <h1> Chat System </h1>
        </div>
    <script type="text/javascript">
    var socket = io();
    </script>
    </body>
</html>

我该如何解决?

【问题讨论】:

Socket.IO infinite loop on connection的可能重复 【参考方案1】:

您的客户端不断尝试一遍又一遍地连接的通常原因是因为您的 socket.io 的客户端和服务器版本不匹配,导致它们不兼容。您没有展示如何在网页中加载 socket.io Javascript,但如果您这样做:

<script src="/socket.io/socket.io.js"></script>

然后,您将始终自动从您的服务器获得与您的服务器完全匹配的版本(这是 socket.io 服务器自动添加到您的 Express 服务器的路由)。

如果您从 CDN 加载 socket.io,那么您必须切换到上述模式以从您自己的服务器加载它,或者从 CDN 手动指定与您在服务器上运行的完全相同的版本。

【讨论】:

非常感谢!这个答案是金。为我节省了数小时试图找出为什么 socket.io 客户端进入循环的时间。【参考方案2】:

如果你在 React/NextJs 上使用它 只需将它们声明为全局

import socketClient from "socket.io-client";
const SERVER = "http://127.0.0.1:8000";
const socket = socketClient(SERVER);
export default chatApplication=()=>
    //main component 

【讨论】:

【参考方案3】:

例如将端口号从 3000 更改为 7000。

【讨论】:

这没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review @Chris:它可能提供答案。例如,如果 Denis 认为 3000 上存在某种类型的端口冲突,那么更改端口可能是一种解决方案。但是,如果是这样,那么这个答案肯定会受益于对为什么 OP 应该改变他们的端口的额外解释——特别是考虑到有一个被接受的答案,其中有很多票提出了一个不同的 i> 解决方案。 如果可能,请努力提供额外的解释,而不仅仅是代码。此类答案往往更有用,因为它们可以帮助社区成员,尤其是新开发人员更好地理解解决方案的推理,并有助于避免需要解决后续问题。

以上是关于在nodejs socket.io中显示连续连接消息的主要内容,如果未能解决你的问题,请参考以下文章

拒绝来自不是服务器 IP 的 UP 的 nodejs 连接 [重复]

nodejs socket 怎么检测客户端主动断开连接

Socket.io - nodejs 服务器端。重新连接后传输关闭

Socket.io 连接网址?

NodeJS - Socket.io 只允许经过 JWT 验证的连接

如何使用 socket.io、react native、nodejs 管理聊天应用程序的多个套接字连接