我试着做一个简单的IRC来了解事情是如何工作的。我已经设置了一个本地节点服务器和另一个工作空间连接到localhost,它们可以正常通信。但是,当我将本地服务器推送到Openshift并尝试使用;
与客户端连接时var socket = io.connect("http://irc-abc.rhcloud.com:3000");
没有连接。
我在这里做错了什么,或者我怎样才能使它工作?
注意:我是websockets的新手,我正在努力理解它们,我可能错过了大局。是的,我确实在stackoverflow上发现了很多类似的问题,但是它没有帮助我,因为我说我是websockets的新手,并且理解它有一些困难。
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var ip = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1';
var port = process.env.OPENSHIFT_NODEJS_PORT || 3000;
// TO-DO verify creds against db
var credentials = {
'username' : ''
};
io.on('connection', function(socket){
// verify if client has username
socket.on('login', function(credentials){
if(credentials.username) {
this.username = credentials.username;
console.log( this.username + ' connected');
io.emit('notice', this.username + ' connected');
}
else {
console.log( 'USER GOT DENIED' );
socket.disconnect();
}
// when message received
socket.on('chat message', function (msg) {
var message = this.username + ': ' + msg;
io.emit('chat message', message);
});
});
// when user disconnects
socket.on('disconnect', function(){
console.log( this.username + ' disconnected');
});
});
http.listen(port, ip);
console.log('listening on ' + ip + ':' + port);
var socket = io.connect("irc-abc.rhcloud.com:3000");
var username = '<?php if(isset($_SESSION['username'])) echo $_SESSION['username'];
else echo 'guest'; ?>';
var credentials = {
'username' : username
};
socket.emit('login', credentials);
$('form').submit(function() {
if ($('#m').val()) {
socket.emit('chat message', $('#m').val());
$('#m').val('');
}
window.scrollTo(0,document.body.scrollHeight);
return false;
});
socket.on('chat message', function(msg){
$('#messages').append($('<li>').text(msg));
window.scrollTo(0,document.body.scrollHeight);
});
socket.on('notice', function(notice){
$('#messages').append($('<li>').text(notice));
window.scrollTo(0,document.body.scrollHeight);
});
标题>标题>我要做的第一件事是检查端口3000是否有防火墙。一些(大多数)主机防火墙所有不常用的端口(80,443等)。如果您不能让他们立即更改防火墙,请使用端口80进行测试。