【发布时间】:2019-02-07 20:05:27
【问题描述】:
我开发了一个报废工具,可以从所有网站报废工作并将它们保存到数据库中。我已经创建了自己的默认日志,我在其中获取消息(错误、信息)等。我正在使用 socket.io 来实时更新我的视图以及数据库。
问题是当我启动应用程序时,它完美地建立了套接字和数据库连接。但是当我尝试刷新页面时,相同的连接会再次使用相同的消息和不同的 ID 进行两次。在我刷新页面的同时,建立了连接,并且 ID 发生了变化,但是对于所有建立的连接,它们都使用一个 ID,
下面是显示它的日志:
我已经上传了this 视频,请也检查一下。尝试看最开始,然后在01:41和03:06,在第一个站点开始报废之前建立了连接,但是当第二个网站报废时,Internet Connection消息被给出了两次,并且相同代表当第三个网站报废开始时,消息的数量每次都会翻倍。我不知道为什么。
我已经尝试按照this问题的答案,但仍然没有成功。 server 文件上的代码有 600 多行,第二个文件有 150 多行,客户端也一样,所以我不能全部上传,有点保密。
但是客户端和服务端的socket连接是这样的:
服务器端
const express = require("express");
const app = express();
const scrap = require("./algorithm");
const event = scrap.defEvent;//imported from another file
const ms_connect = scrap.ms_connect;
const server = app.listen(8000, function(){ console.log('Listening on 8000'); });
const io = require("socket.io").listen(server);
const internetAvailable = require("internet-available");
app.use(express.static(__dirname + "/"));
app.get("/scrap",function(req,res){
res.sendFile(__dirname+"/index.html");//Set the Default Route
io.on("connection",function(socket){ //On Socket Connection
socketSameMess("Socket",'Sockets Connection Made on ID : <span style="color:#03a9f4;">'+socket.id+'<span>');
ms_connect.connect(function(err){//On Connection with Database
if(err) socketSameMess("database_error",err+" "); // If any error in database connection
socketSameMess("Database ",'Connected to MYSQL Database Successfully...');
})
})
})
function eventSameMess(auth,mess){
//hits the custom console
defEvent.emit("hitConsole",{a:auth,m:mess});
}
客户端
var socket = io.connect('http://localhost:8000');
socket.on('connect',function(){
if(socket.connected){
initDocument();
}
})
【问题讨论】:
标签: node.js websocket socket.io socket.io-1.0