套接字.IO客户机到服务器混淆



我试着做一个简单的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进行测试。

相关内容

  • 没有找到相关文章

最新更新