程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了socket.io没有发送给客户端大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决socket.io没有发送给客户端?

开发过程中遇到socket.io没有发送给客户端的问题如何解决?下面主要结合日常开发的经验,给出你关于socket.io没有发送给客户端的解决方法建议,希望对你解决socket.io没有发送给客户端有所启发或帮助;

每当事情无法正常进行时,您都需要诉诸“调试模式”。在这种模式下,您需要收集所有可能发生的事件,并从中学到什么。为此,请将以下代码添加到客户端:

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站点上的客户端文档中,您可以随时通过谷歌搜索“ socket.io github”来找到它们。

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

仅供参考,我们假设您已在此代码之前通过脚本标记将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?

解决方法

我正在尝试创建一个简单的脚本,以便每次文件更新时都将文件中的数据发送到客户端。我已经测试过,发现该文件已被读取,但是客户端什么也没收到。控制台中没有错误。我对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")
});

大佬总结

以上是大佬教程为你收集整理的socket.io没有发送给客户端全部内容,希望文章能够帮你解决socket.io没有发送给客户端所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: