尝试实现一件简单的事情。通过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不是一个选项,因为我需要它在我的域上运行。一切都在同一台机器上运行。
答案 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');
});
这解决了我的问题。也许这也是你的问题?