我在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