我在客户端使用这个
<script type="text/javascript" src="http://domain.com:8440/socket.io/socket.io.js"></script>
当服务器太忙时,有时会在客户端给出“io not Define”的错误。我该如何解决这个问题?
这是我的服务器代码
var db_helper = require("./db.js");
var io=require('socket.io').listen(8440);
var check = require('validator').check,
sanitize = require('validator').sanitize;
var roomid=0;
var anonid;
var ilet;
var userip;
var blck_id;
io.set('transports', [
, 'xhr-polling'
, 'websocket'
, 'jsonp-polling'
]);
服务器具有 16 GB RAM 和 13.6 GHz CPU。
请记住,node.js 应用程序在单线程中运行,除非您使用 Cluster 之类的东西来运行更多应用程序。这意味着,如果您正在执行阻止的操作,则对 http://domain.com:8440/socket.io/socket.io.js 的请求可能会超时,这将导致您的 io 未定义错误。如果发生这种情况,您也应该在控制台日志中看到 404 错误。
试试这个,
获取客户端socketio库并将其放入提供js文件的文件夹中。将脚本位置指向该文件位置。
您可以在这里找到客户端脚本
<server node_modules>\socket.io\node_modules\socket.io-client\dist\socket.io.js
首先,正如@Timothy 所指出的,尝试找出节点变得繁忙的原因。
正如 Chandu 指出的那样,您可以尝试从常规 Web 服务器提供 socket.io.js 文件。 这至少应该减轻 Node.js 服务器的负载。
其次 - 这更重要 - 看看是什么阻止了你的 Node.js 服务器。由于 Node.js 是单线程的,因此您应该尽一切努力避免长时间运行的操作。 你能举一个你在节点中运行的代码的例子吗?