2012-09-19 45 views
2

我收到错误一个简单的socket:试图创建使用socket.io

Port error: Could not establish connection. Receiving end does not exist.

,但我无法弄清楚如何解决这一问题,任何帮助吗?这里是我的代码:

服务器(app.js)

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

server.listen(8088); 

//routing 
app.get('/', function (req, res) { 
    res.sendfile(__dirname + '/index.html'); 
}); 

io.sockets.on('connection', function (socket) { 

    socket.emit('news', { hello: 'world' }); 

    socket.on('set nickname', function (name) { 
    socket.set('nickname', name, function() { socket.emit('ready'); }); 
    }); 

    socket.on('msg', function() { 

    socket.get('nickname', function (err, name) { 
     console.log('Chat message by ', name); 
    }); 

    }); 

}); 

客户端(浏览次数index.html)

<script src="/socket.io/socket.io.js"></script> 
<script> 
    var socket = io.connect('http://localhost:8088'); 

    socket.on('news', function (data) { 
    console.log(data); 
    }); 

    socket.on('connect', function() { 
    socket.emit('set nickname', prompt('What is your nickname?')); 

    socket.on('ready', function() { 
     console.log('Connected !'); 
     socket.emit('msg', prompt('What is your message?')); 
    }); 

    }); 
</script> 

编辑

我删除socket.connect()从客户端,但仍然得到同样的错误

回答

0

AFAIK, iosocket的事件是在客户端建立连接时在服务器端触发的事件,而不是在成功连接到服务器时在客户端触发的事件。如果我是对的,你的客户端代码应该响应“新闻”事件(它应该在服务器确认连接时看到)。

1

我从来没有在客户端使用socket.connect(),我从来没有看到错误,所以我认为这是你的错误来自的地方。

在客户方

var socket = io.connect('http://localhost:8088') 

应该是你需要调用建立连接的唯一的事情,ES ebohlman表示对客户方没有连接情况下,如果你要听该事件u有在服务器端自己发出它。

io.sockets.on('connection',function(){ 
    socket.emit('connect',{...}) 
}) 

http://socket.io/的首页有一个简单的例子,它应该让你开始。

+0

即使没有socket.connect();我得到那个错误,我想我错过了别的东西。另一件事是,我花了很多时间来得到任何消息,我认为这是socket.io的一个已知问题 – Tsundoku

0

尝试端口3000或5000而不是8088

0

一些事件,这些样的错误都无关,与你的代码,这样你就可以忽略它们。他们不会干扰你的代码。它们起源于浏览器扩展,通常尝试连接到本地文件。可以找到针对该特定错误的更多帖子。这就是我发现的原因!