gpt4 book ai didi

javascript - socket.io 不发送给客户端

转载 作者:行者123 更新时间:2023-11-30 21:14:41 24 4
gpt4 key购买 nike

我正在尝试创建一个简单的脚本,以便在每次更新文件时将文件中的数据发送到客户端。我已经测试过,发现文件被读取了,但是客户端没有收到任何东西。控制台中没有错误。我是 socket.io 的新手。

node.js 代码

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var fs = require("fs");
var port = process.env.PORT || 3000;

app.get('/', function(req, res){
res.sendFile(__dirname + '/popup.html');
});

fs.watchFile("assets/popup.json", {interval:100}, function(curr, prev)
{
fs.readFile("assets/popup.json",{encoding:"utf8"}, function(err, data){
io.emit("popup", data)
})
});
http.listen(port, function(){
console.log('listening on *:' + port);
});

客户端代码

var socket = io();
socket.on('popup', function(msg){
alert("hello")
});

最佳答案

每当事情不能像这样正常工作时,您就需要求助于“ Debug模式”。在那种模式下,您需要收集所有可能发生的事件,看看您从中学到了什么。为此,将此代码添加到客户端:

var socket = io();
socket.on('popup', function(msg){
console.log("hello: ", msg)
});
socket.on('connection', function() {
console.log("client connected");
});

socket.on('connect_error', function(err) {
console.log("client connect_error: ", err);
});

socket.on('connect_timeout', function(err) {
console.log("client connect_timeout: ", err);
});

这些消息都记录在 socket.io Github site 上的客户端文档中您可以随时通过谷歌搜索“socket.io github”找到它。

然后,查看页面加载时您在浏览器控制台中看到的内容。如果您不知道如何在您使用的任何浏览器中打开浏览器控制台,请用谷歌搜索查找。您需要在页面加载时查看调试控制台。

仅供引用,我们假设您已通过此代码之前的脚本标记将 socket.io 加载到页面中。否则,该错误也会显示在控制台中。


然后 OP 收到此错误:

client connect_error: 
Error: server error at Socket.onPacket (socket.io-1.2.0.js:1)
at XHR.<anonymous> (socket.io-1.2.0.js:1)
at XHR.Emitter.emit (socket.io-1.2.0.js:1)
at XHR.Transport.onPacket (socket.io-1.2.0.js:1)
at callback (socket.io-1.2.0.js:2)
at Object.exports.decodePayload (socket.io-1.2.0.js:2)
at XHR.Polling.onData (socket.io-1.2.0.js:2)
at Request.<anonymous> (socket.io-1.2.0.js:2)
at Request.Emitter.emit (socket.io-1.2.0.js:1)
at Request.onData (socket.io-1.2.0.js:2)

好的,进步了。您如何在客户端页面加载 socket.io?这似乎可能是您在客户端和服务器中的 socket.io 版本不匹配。你应该这样做:

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

然后您的服务器将向客户端页面提供完全相同版本的 socket.io。另外,由于此错误报告客户端socket.io 1.2.0,服务器上安装的是什么版本的socket.io?

关于javascript - socket.io 不发送给客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45807517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com