Socket.io聊天无法在服务器上运行

时间:2014-11-18 03:02:07

标签: node.js socket.io chat openshift

我的聊天应用程序在本地服务器上正常运行,但当我将其推送到openshift服务器时,聊天功能无效。

我正在关注此示例:http://socket.io/get-started/chat/

以下是我的HTML代码

    <body>
        <ul id="messages"></ul>
        <form action="">
            <input id="m" autocomplete="off" /><button>Send</button>
        </form>
        <script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
        <script src="http://code.jquery.com/jquery-1.11.1.js"></script>
        <script>
            var socket = io();
            $('form').submit(function () {
                socket.emit('chat message', $('#m').val());
                $('#m').val('');
                return false;
            });
            socket.on('chat message', function (msg) {
                $('#messages').append($('<li>').text(msg));
            });
        </script>
    </body>

下面是我的server.js

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

    var ipaddress = process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1";
    var port = process.env.OPENSHIFT_NODEJS_PORT || 3000;

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

    io.on('connection', function (socket) {
        socket.on('chat message', function (msg) {
            io.emit('chat message', msg);
        });
    });

    http.listen(port, function () {
        console.log('listening');
    });

相同的代码在我的本地服务器上正常工作。现在我只是广播包括发件人在内的邮件。

我哪里错了?

3 个答案:

答案 0 :(得分:1)

$( document ).ready(function() {});

这段代码救了我。我忘了将我的脚本放在jquery文件中。所以最终的代码看起来像这样。

  $( document ).ready(function() {
    var socket = io();
    $('form').submit(function(){
        socket.emit('chat message', $('#m').val());
        $('#m').val('');
        return false;
        });
     });

答案 1 :(得分:0)

您的聊天客户端需要连接到端口8000上的websocket聊天服务器以获取ws(或8443 for wss)。确保在连接时指定该端口号。

答案 2 :(得分:0)

我知道它有点晚了,但文件还没有准备好,导致错误。 试试这段代码:

$( document ).ready(function() {
        var socket = io();
        $('form').submit(function(){
            socket.emit('chat message', $('#m').val());
            $('#m').val('');
            return false;
        });
    });