1

nodejs:v0.10.2 和 express 3.x 和 socket.io 0.9.11

我只是在 socket.io 上尝试示例代码,如下所示。

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' });
});

然后我有一个像图片上的错误消息。

在此处输入图像描述

4

3 回答 3

1

首先你必须检查连接是否建立,然后你继续你的代码

这里有一些示例代码

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..')
})
于 2013-08-30T07:30:24.880 回答
0

我已将 socket.io 0.9.11 更改为 0.9.13 而不是它的工作。

于 2013-03-29T04:02:07.823 回答
0

检查服务器端代码中的处理函数。您正在多次发送响应,这就是为什么它在已经发送标头时给出错误,因为响应已经发送并且您正在再次发送它。更正如下代码。

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);
    }
  });
}
于 2018-01-22T05:08:03.803 回答