我得到“io未定义”错误

时间:2013-08-13 07:48:00

标签: node.js socket.io

我在客户端上使用它

<script type="text/javascript" src="http://domain.com:8440/socket.io/socket.io.js"></script>

当服务器太忙时,有时它会在客户端上出现“未定义”错误。我该如何解决这个问题?

这是我的服务器代码

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。

3 个答案:

答案 0 :(得分:3)

请记住,node.js应用程序在单个线程中运行,除非您使用Cluster之类的东西来运行更多。这意味着如果您正在执行阻塞操作,则http://domain.com:8440/socket.io/socket.io.js的请求可能会超时,这会导致您的io未定义错误。如果/发生这种情况,您应该在控制台日志中看到404错误。

答案 1 :(得分:1)

试试这个,

获取clientide socketio库并将其放在提供js文件的文件夹中。将脚本位置指向此文件位置。

您将在此处找到客户端脚本

 <server node_moudules>\socket.io\node_modules\socket.io-client\dist\socket.io.js

首先,正如@Timothy指出的那样,试着找出节点忙碌的原因。

答案 2 :(得分:0)

您可以尝试从常规Web服务器提供socket.io.js文件,正如Chandu指出的那样。 这应该至少从该负载卸载node.js服务器。

其次 - 这更重要 - 看看什么阻塞了你的node.js服务器。由于node.js是单线程的,因此您应该避免长时间运行的操作。 您能举例说明您在节点中运行的代码吗?

相关问题