Socket.io 不适用于 Firefox 和 Chrome

2023-11-29

我正在尝试开发一个简单的聊天应用程序。 这是我的chat.js file.

var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs');
app.listen(8124);
function handler (req, res) {
fs.readFile(__dirname + '/chat.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading chat.html');
}
res.writeHead(200);
res.end(data);
});
}
io.sockets.on('connection', function (socket) {
    socket.on('addme',function(username) {
        socket.username = username;
        socket.emit('chat', 'SERVER', 'You have connected');
        socket.broadcast.emit('chat', 'SERVER', username + ' is on deck');
    });
    socket.on('sendchat', function(data) {
        io.sockets.emit('chat', socket.username, data);
    });
    socket.on('disconnect', function() {
        io.sockets.emit('chat', 'SERVER', socket.username + ' has left the building');
    });
});

And my 聊天.html file.

<head>
<meta charset="utf-8">
<title>bi-directional communication</title>
<script src="/socket.io/socket.io.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$(document).ready(function(e) {
    var socket = io.connect('http://localhost:8124/');
    $('#submit').click(function(e) {
        e.preventDefault();
        v = $('#uname').val();
        $('#username').html('');
        socket.emit('addme', v);
    });

    socket.on('chat',function(username, data) {
        var p = document.createElement('p');
        p.innerHTML = username + ': ' + data;
        document.getElementById('output').appendChild(p);
    });
    window.addEventListener('load',function() {
        document.getElementById('sendtext').addEventListener('click',
        function() {
            var text = document.getElementById('data').value;
            socket.emit('sendchat', text);
        }, false);
    }, false);

});
</script>
</head>
<body>
<div id="output"></div>
<div id="username">
  <input type="text" name="uname" id="uname">
  <input type="submit" name="submit" id="submit" value="Submit">
</div>
<div id="send">
  <input type="text" id="data" size="100" /><br />
<input type="button" id="sendtext" value="Send Text" />
</div>
</body>
</html>

我通过输入来测试代码节点聊天.js在 node.js 命令提示符中然后输入http://localhost:8124/在我的浏览器地址栏中。问题是,虽然这在 IE9 上完美运行,但在 Firefox 和 Chrome 上却没有任何反应。

当我在 Chrome 或 Firefox 上运行 Node.js 命令提示符时,我收到以下内容。

info  - socket.io started
   debug - served static content /socket.io.js
   debug - client authorized
   info  - handshake authorized 0yJjYvt7o36BTX6T_hXA
   debug - setting request GET /socket.io/1/websocket/0yJjYvt7o36BTX6T_hXA
   debug - set heartbeat interval for client 0yJjYvt7o36BTX6T_hXA
   debug - client authorized for
   debug - websocket writing 1::
   debug - setting request GET /socket.io/1/xhr-polling/0yJjYvt7o36BTX6T_hXA?t=1
341573194770
   debug - setting poll timeout
   debug - discarding transport
   debug - cleared heartbeat interval for client 0yJjYvt7o36BTX6T_hXA
   debug - setting request GET /socket.io/1/jsonp-polling/0yJjYvt7o36BTX6T_hXA?t
=1341573204771&i=0
   debug - setting poll timeout
   debug - discarding transport
   debug - clearing poll timeout
   debug - clearing poll timeout
   debug - jsonppolling writing io.j[0]("8::");
   debug - set close timeout for client 0yJjYvt7o36BTX6T_hXA
   debug - jsonppolling closed due to exceeded duration
   debug - setting request GET /socket.io/1/jsonp-polling/0yJjYvt7o36BTX6T_hXA?t
=1341573224817&i=0
   debug - setting poll timeout
   debug - discarding transport
   debug - cleared close timeout for client 0yJjYvt7o36BTX6T_hXA
   debug - clearing poll timeout
   debug - jsonppolling writing io.j[0]("8::");
   debug - set close timeout for client 0yJjYvt7o36BTX6T_hXA
   debug - jsonppolling closed due to exceeded duration
   debug - setting request GET /socket.io/1/jsonp-polling/0yJjYvt7o36BTX6T_hXA?t
=1341573244856&i=0

这样的情况还在继续。请帮忙。


谢谢 ebohlman 抽出时间,但我解决了问题。在我的chat.js我添加了以下行。

io.configure('development', function(){
  io.set('transports', ['xhr-polling']);
});

现在我的 chat.js 看起来像。

var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs');

app.listen(8124);

io.configure('development', function(){
  io.set('transports', ['xhr-polling']);
});

function handler (req, res) {
fs.readFile(__dirname + '/chat.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading chat.html');
}
res.writeHead(200);
res.end(data);
});
}
io.sockets.on('connection', function (socket) {
    socket.on('addme',function(username) {
        socket.username = username;
        socket.emit('chat', 'SERVER', 'You have connected');
        socket.broadcast.emit('chat', 'SERVER', username + ' is on deck');
    });
    socket.on('sendchat', function(data) {
        io.sockets.emit('chat', socket.username, data);
    });
    socket.on('disconnect', function() {
        io.sockets.emit('chat', 'SERVER', socket.username + ' has left the building');
    });
});

但我仍然不知道是什么原因导致了这个错误。如果知道请解释一下!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Socket.io 不适用于 Firefox 和 Chrome 的相关文章

  • 缺少节点-v59-linux-x64/grpc_node.node

    我正在尝试在我的服务器中使用 Firebase admin SDK 当我部署时 出现错误 我在 firebase admin node module 映射中缺少文件 node v59 linux x64 grpc node node 我在包
  • firebase 和 firebase-admin npm 模块有什么区别?

    我想使用 Firebase 身份验证 数据库和存储 构建 Node js Web 应用程序 但我对应该使用哪个模块感到困惑 firebase or firebase 管理员 或两者 管理 SDK 运行您的代码管理权限 https fireb
  • Cosmos DB Mongo API 如何管理“请求率很大”情况

    我有以下代码 async function bulkInsert db collectionName documents try const cosmosResults await db collection collectionName
  • 根据特定字符获取整个字符串或子字符串

    我有一个包含 MIME 类型的字符串 例如application json 现在我想将其与实际的 HTTP 标头进行比较 在本例中content type 如果标头包含 MIME 类型 那么就很简单 if mimeType contentT
  • 下载中带有文件名的 NodeJS sendFile

    我尝试使用以下代码将文件发送给客户端 router get get myfile function req res next res sendFile other file name dat 它工作正常 但当用户从以下网址下载此文件时我需要
  • 使用 KeystoneJs 的 Mongoose 二级种群 [重复]

    这个问题在这里已经有答案了 我需要用 Mongoose Keystone 填充两层 但遇到了障碍 我有 3 个模型 地区 国家和城市 地区包含国家 国家包含城市 我的模型 型号区域 var Region new keystone List
  • 如何使用remark将markdown解析为json

    The 备注站点 https remark js org 有一个 AST 浏览器的链接 用于输出备注 https astexplorer net gist 0a92bbf654aca4fdfb3f139254cf0bad ffe102014
  • 我在 MacBook M1 max 中的 nodejs 连接到数据库 oracle 时遇到问题帮助我

    Node js 中的错误消息 nodemon 启动node server js错误 错误 DPI 1047 无法找到 64 位 Oracle 客户端库 dlopen Users pitidev ldb Downloads instantcl
  • 在heroku上部署时出错,/bin/sh: 1: webpack: not found

    这是我在 heroku 网站上手动部署时遇到的错误 首先 我在 json 文件中遇到错误 因此我指定了正在运行的 npm yarn 和 node 版本 这些错误似乎已经清除 现在我就是这样的人 并且已经搜索了谷歌 但似乎找不到太多关于修复它
  • 在node.js中加载并执行外部文件

    从另一个节点js文件运行一个节点js文件是否容易 可能 例如 我有两个文件 test1 js 和 test2 js 我想从 test2 js 执行 test1 js 文件 我认为完成你想做的事情的更好方法是按照我的其他答案建议的去做 但是要
  • 具有 Firebase (FCM) 推送通知的 Node js

    我正在使用 Node js 开发 REST api 并且有一个休息端点来发送 firebase 推送通知 我的代码如下 const bodyParser require body parser var cors require cors v
  • 通过 node-http-proxy 保留基于 cookie 的会话

    我有一个简单的基于 Express 的 Node js Web 服务器 用于开发 JavaScript 应用程序 我将服务器设置为使用 node http proxy 来代理应用程序向在不同域和端口上运行的 Jetty 服务器发出的 API
  • 流星内存不足

    我正在使用流星来制作报废引擎 我必须执行一个 HTTP GET 请求 这会向我发送一个 xml 但这个 xml 大于 400 ko 我得到一个异常 内存不足 result Meteor http get http SomeUrl com 致
  • 如何在node.js中的一定时间后强制解决承诺? [复制]

    这个问题在这里已经有答案了 我正在尝试从其 url 下载大量图像 然后在 Node js 中创建一个 PDF 文件 我正在使用图片下载器 https www npmjs com package image downloader模块下载承诺链
  • 猫鼬不创建索引

    我最近开始使用 Mongoose v 3 2 1 但我遇到了索引问题 我在我的模式 Schema path attr index true 上定义了几个索引 但它们不是在数据库中创建的 我在 shell 中运行 db collection
  • MongoDB 仅插入唯一电子邮件条件不起作用

    在我的猫鼬模式中 我有以下两个字段 username type String required true user name required trim true unique true email type String required
  • Node.js 每个用户一个会话

    如何防止我的用户同时从两个设备登录我的系统 因此 如果用户从计算机登录 当他从不同的计算机登录时 首先会自动关闭会话 不需要使其实时 我使用node js express js mongoose passport connect mongo
  • Node.js 可读流_read用法

    我了解如何在 Node 的 new 中使用可写流Streams2库 但我不明白如何使用可读流 举个例子 一个流包装器围绕dgram module var dgram require dgram var thumbs twiddle func
  • Express.js Passport认证自动失败跳过策略

    UPDATE 我已将代码从护照本地注册内部移至单独的处理程序 并且运行良好 问题在于 Passport 和本地注册的使用 但我不知道为什么 我使用 Node js Express Passport 进行身份验证和注册设置 这是以前使用过的标
  • 如何调试 Gulp 任务?

    如何调试我的中定义的 gulp 任务gulpfile js使用诸如 Google Chrome 调试器之类的调试器逐行单步执行任务的代码 对于 Node js 6 3 版本 您可以使用 inspect flag https nodejs o

随机推荐

  • 滚动视图内的RelativeLayout不滚动

    我尝试用滚动视图包装我的相对布局以在横向模式下使用 但它不起作用 我还尝试用 Linearlayout 包装我的相对布局 但它也不起作用 这是将relativelayout包装在scrollview中的xml
  • JSON 字符编码

    我的 Java Web 应用程序提交一个返回 JSON 的 AJAX 请求 如下所示 value a riennes 当 a riennes 在网页中显示时 它显示为 a riennes 所以我猜测存在某种字符编码问题 AJAX 响应标头包
  • 字符串编码 TextView.setText()

    在 TextView 中设置文本时 无法正确解释字符 这是我的代码 TextView tv new TextView context String s byte bytes s dgse eT41 bytes s getBytes ISO
  • 使用默认实现的空安全映射比较器

    Java 8 中是否可以内置创建空安全映射比较器 而无需编写自己的实现Comparator 运行以下代码时 会导致 NPE 因为keyExtractor的论证Comparator comparing 可能会返回一个null value pu
  • omp 中的“C6993:代码分析忽略 OpenMP 构造”是什么意思?

    我将 omp 与 Visual Studio 2019 和 C 一起使用 但它一直给我提示 C6993 代码分析忽略 OpenMP 这是否意味着 omp 将在单线程中运行该程序 为什么 以下是代码 我测量了添加 omp 之前和之后的时间 它
  • 如何将整个窗口移动到屏幕上的某个位置(Tkinter,Python3)

    标题说明了一切 如何使用 tkinter 将整个窗口移动到屏幕上的某个位置 这应该是移动根框架 Use the geometry根 或任何顶级 窗口的方法 例如 import tkinter as tk root tk Tk root ge
  • 即使处理了被拒绝的承诺,仍收到“UnhandledPromiseRejectionWarning”

    我构建了一个迭代的函数Generator包含同步代码和Promises module exports isPromise value return typeof value object value null then in value r
  • 可以“使用严格”警告而不是错误

    使用时use strictperl 将在不安全的构造上生成运行时错误 现在我想知道是否可以让它只打印警告而不导致运行时错误 或者是use warnings 或 w 关于相同问题的警告 No use strict无法发出警告而不死 它所做的只
  • 为什么 Next.js 中间件会多次运行?

    我创建了一个新鲜的Next js using npx create next app latest typescript 安装后 版本为13 3 4 在不更改任何文件的情况下 我添加了一个新的middleware ts文件内的src文件夹
  • Java中有没有办法实现n层嵌套循环?

    换句话说 我可以做类似的事情吗 for for for 除了N次 换句话说 当调用创建循环的方法时 它会被赋予一些参数 N 然后该方法将创建 N 个嵌套在另一个循环中的循环 当然 我们的想法是应该有一种 简单 或 通常 的方法来做到这一点
  • 我希望我的 Domino Servlet 获得经过身份验证的用户会话

    这似乎是一个非常基本的问题 在 Domino 上托管的正在运行的 Servlet 中 我想要访问 Domino 资源 我已经使用 IBM Notes 和 Domino 的非常精细的安全性明智地保护了这些资源 我希望 Servlet 能够向
  • React Native 错误:原始“”必须包含在显式 组件中

    您好 我在本机反应中遇到此错误 无法找出导致此错误的原因 帮助将不胜感激 谢谢 问题是空格 但是 使用制表符不算空格 尝试删除之间的空间tag和comment在第 32 和 37 行
  • 如何使用 XLRD 或 openpyxl 编辑 Excel 工作簿,同时保留图表?

    我有一本工作簿 里面有一些工作表 其中一张纸上有图表 我需要使用 xlrd 或 openpyxl 编辑另一张工作表 但是 每当我保存工作簿时 图表就会消失 有什么解决方法吗 是否有另一个保留图表和格式的 python 包 目前这两者都不可能
  • Spring 3 MVC + MySQL:无法存储 € 字符

    我使用 Hibernate 和 MySQL 5 设置了 Spring 3 MVC 在 Web 表单中 我在字段中输入单个字符 即仅一个字符 当我尝试保存数据时 出现以下异常 java sql BatchUpdateException Dat
  • Gradle 任务配置与任务执行

    下面的代码有什么区别 task A println configuration task B lt lt println action 我认为这与评价有关 即任务 A 总是被评估 而任务 B 仅在执行时才进行评估 事实上 任务 A 的 pr
  • 在 Monotouch 中使用 CoreAnimation 为自定义属性设置动画?

    这本质上与此处发布的问题相同 在 CALayer 中对自定义属性进行动画处理一年多前 尚未得到答复 我创建一个自定义图层并在其上画一个圆圈 我希望能够对圆的半径 以及稍后的其他属性 进行动画处理 根据我读到的内容 我是这样设置的 publi
  • 我在哪里可以找到一些 UML 示例? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我需要大量 UML 图样本作为开发我自己的图的起点 有谁知道有什么好的网站可以找到吗 Thanks 学习 UML 的最佳资源是 Martin Fowler 的 UML 蒸馏 如今 这
  • 在离线 iOS 应用程序中使用 MBTiles

    我已经有一个使用 MBTiles 格式存储的地图 我想在我正在制作的应用程序中使用它 应用程序在移动设备上没有信号 连接的情况下运行至关重要 Mapbox 之前有一个示例 介绍了如何将 MBTiles 与 RMMBTilesSource 一
  • 使用四元数从 iPhone 计算偏航、俯仰和滚动?

    我见过很多问题和文章提到四元数可以用来从 iPhone 获得更好 更准确 更稳定的偏航 俯仰和横滚读数 而不是读取它的直接偏航 俯仰和横滚读数 但与此同时 我还没有看到任何在iPhone平台上实现四元数的正确方法 作为初学者 真的很难知道这
  • Socket.io 不适用于 Firefox 和 Chrome

    我正在尝试开发一个简单的聊天应用程序 这是我的chat js file var app require http createServer handler io require socket io listen app fs require