我在nodejs 0.10.2 + express 3.x + socket.io 0.9.11中出错

nodejs:v0.10.2并且表达3.x和socket.io 0.9.11

我只是尝试socket.io上的示例代码像lelow。

http.js708抛出新错误(发送后无法设置标题)

http://socket.io/#how-to-use

服务器端


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

    app.listen(80);

    function handler (req, res) {
      fs.readFile(__dirname + '/index.html',
      function (err, data) {
        if (err) {
          res.writeHead(500);
          return res.end('Error loading index.html');
        }

        res.writeHead(200);
        res.end(data);
      });
    }

    io.sockets.on('connection', function (socket) {
      socket.emit('news', { hello: 'world' });
      socket.on('my other event', function (data) {
        console.log(data);
      });
    });

客户端 - index.html


    
    
      var socket = io.connect('http://localhost');
      socket.on('news', function (data) {
        console.log(data);
        socket.emit('my other event', { my: 'data' });
      });
    

比我在图片上有错误信息。

在这里输入图像描述


首先,你要检查连接是否已经建立,而不是在你继续你的代码

这里有一些示例代码

var app = require('express')()
  , http = require('http')
  , server = http.createServer(app)
  , io = require('socket.io').listen(server)

server.listen(3000)    

io.on('connection',function(socket){
  console.log('connection..')
})

我已经改变了socket.io 0.9.11到0.9.13比它的工作。


检查服务器端代码中的处理函数。 你正在发送响应多次,这就是为什么它已经发送错误,因为已经发送了标题,因为响应已经发送并且你正在发送它。 如下所示更正代码。

function handler (req, res) {
  fs.readFile(__dirname + '/index.html',
  function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading index.html');
    } else {
      res.writeHead(200);
      res.end(data);
    }
  });
}
链接地址: http://www.djcxy.com/p/44807.html

上一篇: I have a error with nodejs 0.10.2 + express 3.x + socket.io 0.9.11

下一篇: Which version of python opencv should I go for?