套接字 io 服务器没有响应

Posted

技术标签:

【中文标题】套接字 io 服务器没有响应【英文标题】:socket io server is not responding 【发布时间】:2015-04-22 08:33:54 【问题描述】:

有时对 https:/domain:8050'/socket.io/socket.io.js 的请求会在 Chrome 开发人员工具的网络选项卡中返回状态“(失败)”。

在 Firefox 中出现“安全连接失败”错误和中止状态。

Socket IO 版本为“1.3.5”。 Node.js 版本是“v0.10.25”。

server.js

var fs = require('fs'),
    express = require('express'),
    options = 
        secureProtocol: 'SSLv23_method',
        secureOptions: require('constants').SSL_OP_NO_SSLv3,
        ca: fs.readFileSync('/etc/apache2/ssl/CA_Bundle.crt'),
        key: fs.readFileSync('/etc/apache2/ssl/private.key'),
        cert: fs.readFileSync('/etc/apache2/ssl/public.crt'),
        passphrase: 'pssword'
    ,
    app = express();
    server = require('https').Server(options, app);
    io = require('socket.io').listen(server);

    server.listen(8050);

    app.get('/', function (req, res) 
        res.send("server..");
    );
    io.set('transports', ['websocket', 
      'flashsocket', 
      'htmlfile', 
      'xhr-polling', 
      'jsonp-polling', 
      'polling']);

    io.use(function(socket, next)  
        var handshakeData = socket.request,
            cookie =parseCookies(handshakeData);
        if(!socket.handshake.query || !handshakeData.headers || !handshakeData.headers.cookie)  
            next(new Error('-Error code:1')); //cookie transmitted
            console.log('cookie transmitted');
            return false;
        
        else  next();
    );
    io.sockets.on('connection', function (socket) 
        console.log("\ncalled connection 8050.");
    );

index.html

<script type="text/javascript" src="https://domain:8050/socket.io/socket.io.js"></script>

<script type="text/javascript">
var socket = io.connect('https://domain:8050',                 
                    'sync disconnect on unload' : false,
                    'connect timeout': 10000,
                    'reconnect': false,
                );
</script>

【问题讨论】:

【参考方案1】:

你必须告诉 express socket.io 文件夹是一个静态内容的文件夹。如果你在 node_modules 文件夹中有你的 socket.io 东西,你可以使用app.use(express.static('node_modules'));

【讨论】:

以上是关于套接字 io 服务器没有响应的主要内容,如果未能解决你的问题,请参考以下文章

socket.io 在 x 秒/第一次尝试获取响应失败后停止重新发出事件

#2002 - 服务器没有响应(或者没有正确配置本地MySQL服务器的套接字)

#2002 - 服务器没有响应(或者本地 MySQL 服务器的套接字配置不正确)

C#异步套接字服务器没有收到来自Java客户端的响应

#2002 - 服务器没有响应(或者本地 MySQL 服务器的套接字配置不正确)[重复]

MySQL 在负载测试后挂起。错误 2002 - 服务器没有响应(或本地 MySQL 服务器的套接字未正确配置)