尝试使用socket.io创建一个简单的套接字

时间:2012-09-19 05:53:44

标签: node.js socket.io

我收到错误:

  

端口错误:无法建立连接。接收端没有   存在。

但我无法弄清楚如何解决这个问题,有什么帮助吗?这是我的代码:

服务器(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(),但仍然收到相同的错误

5 个答案:

答案 0 :(得分:1)

我从来没有在客户端使用过socket.connect()而且我从未见过这个错误,所以我认为这是你的错误所在。

客户端上的

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

应该是你需要调用来建立连接的唯一东西,es ebohlman在客户端上声明没有连接事件,如果你想听那个事件,你必须自己在服务器端发出它。

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

http://socket.io/的首页上有一个简单的示例,可以帮助您入门。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

尝试端口3000或5000而不是8088

答案 3 :(得分:0)

他的代码看起来很好 客户端socket.on("connect")在连接到指定服务器时触发 这可能是一些港口问题。尝试不同的端口 以下是客户端和服务器端的一些事件 https://github.com/LearnBoost/socket.io/wiki/Exposed-events

答案 4 :(得分:0)

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