Socket.IO客户端不发送到服务器

时间:2014-10-12 17:08:44

标签: javascript html node.js sockets socket.io

尝试实现一件简单的事情。通过Socket.IO将数据从客户端发送到服务器。

但问题是,我试图在这种情况下通过网络服务器使用“http://example.com/application.html”。

服务器应用程序运行正常,客户端也没有任何错误。但是,服务器永远不会接收从客户端发送的数据。

客户端(index.html):

.. <body>

<ul id="messages"></ul>
<form action="">
  <input id="sentMessage" autocomplete="off" /><button>Send</button>
</form>

<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();

$('form').submit(function(){
    socket.emit('chat message', $('#sentMessage').val());
    $('#sentMessage').val('');
    return false;
});

socket.on('chat message', function(msg){
    $('#messages').append($('<li>').text(msg));
});

</script>

</body> ..

服务器(app.js),运行Node.js cmd:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

http.listen(8080);

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

io.on('connection', function(socket) {
    console.log('A user connected');

    socket.on('disconnect', function() {
        console.log('A user disconnect');
    });

    socket.on('chat message', function(msg){
        io.emit('chat message', msg);
        console.log('Message: ' + msg);
    });

});

简而言之,结果应该是在页面“http://example.com/application.html”上,我应该能够向服务器发送消息,然后服务器将消息发送给包括我自己在内的其他连接客户端,但这是没有发生。值得注意的是Localhost不是一个选项,因为我需要它在我的域上运行。一切都在同一台机器上运行。

2 个答案:

答案 0 :(得分:0)

您忘记了连接服务器。

var socket = io.connect('http://hereIsAdressToYourServer.com:8080');

答案 1 :(得分:0)

在heroku上运行应用程序时出现问题,端口是自动处理的。 这就是我必须设置端口的方式。

var port = process.env.PORT || 3000 http.listen(port, function(){ console.log('listening on *:3000'); });

这解决了我的问题。也许这也是你的问题?