Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 代理背后的Nodejs实时聊天客户端_Javascript_Node.js_Sockets_Proxy_Socket.io - Fatal编程技术网

Javascript 代理背后的Nodejs实时聊天客户端

Javascript 代理背后的Nodejs实时聊天客户端,javascript,node.js,sockets,proxy,socket.io,Javascript,Node.js,Sockets,Proxy,Socket.io,我正在建立一个基于nodejs和专业用法的现场聊天。除了一些客户公司的计算机(大多数是在WindowsXP和IE8上),这种方法工作正常 该客户访问了我的Apache服务器,加载包含聊天的HTML并调用下面的Javascript。不幸的是,它从未到达socket.io脚本: 注意:我使用websocket端口843试图避免防火墙问题(如果客户使用) 我想这可能是他们的内部网络到达我们的服务器的问题(可能是由内部代理/或防火墙引起的),但我不能确定,因为我无法从他们那里得到真正的反馈。所以说实话

我正在建立一个基于nodejs和专业用法的现场聊天。除了一些客户公司的计算机(大多数是在WindowsXP和IE8上),这种方法工作正常

该客户访问了我的Apache服务器,加载包含聊天的HTML并调用下面的Javascript。不幸的是,它从未到达socket.io脚本:

注意:我使用websocket端口843试图避免防火墙问题(如果客户使用)

我想这可能是他们的内部网络到达我们的服务器的问题(可能是由内部代理/或防火墙引起的),但我不能确定,因为我无法从他们那里得到真正的反馈。所以说实话,我无法解决这个问题

这个发现是一个好消息,可以测试它是否能解决我的问题。不幸的是,这个项目似乎并不是为web应用程序的使用而构建的(需要使用,很多节点模块依赖性…)

我的客户代码的简单摘要如下:

在HTML页面底部加载的脚本,如使用

如果您认为该问题也可能是由公司代理引起的,您有什么建议可用于嵌入网页吗? 使用我自己的chatux.js

可能有人遇到了同样的问题,可能还有其他线索需要调查?

这个项目是我第一次体验nodejs,所以很抱歉我误解了一些东西。
感谢您的帮助。

为什么不为nodejs应用程序和socket.io使用相同的端口?您是否可以使用此端口?您的onload函数应该是
window.addEvent('domready',function(){
。您所拥有的看起来像是Mootools和jQuery的混合体…@az7ar这是同一个端口。我的nodejs就是这个示例,它也在端口843和socket.io下运行。@Sergio您说得对,但这不是问题所在-顺便说一句,$(文档)在所有浏览器下都能正常工作。目前,我通过在端口843下运行我的nodejs应用程序解决了这些客户的问题,但在聊天客户端上,我使用普通http查询加载nodejs文件。在这之后,服务器端,我使用Apache和ProxyReverse将/nodejs/*URI路由到我使用的相应nodejs端口(即端口843)。
<script type="text/javascript" src="js/chatux.js"></script>
// using Mootools framework
// ----------------------- ONLOAD -----------------------
$(document).addEvent('domready', function() {

    // ----------------------------------------------------------------
    // global vars
    (…)
    var ioPort = 843;
    var ioscript = 'http://'+window.location.hostname+':'+ioPort+'/socket.io/socket.io.js';

    // Set the max moment to now (because server time can be different from client time)
    moment().max( new Date().getTime() );

    // ----------------------------------------------------------------
    // Init server load

    if ( window.self === window.top ){   
        appendScript(ioscript);
        initIO();
    }

    // ----------------------------------------------------------------
    // functions

    function appendScript(pathToScript) {
        var head = document.getElementsByTagName("head")[0];
        var js = document.createElement("script");
        js.type = "text/javascript";
        js.src = pathToScript;
        js.id = 'iojsloader';
        head.appendChild(js);
    }

    function initIO(){
        setTimeout(function(){
            if (typeof io != 'undefined'){
                ConnectingMsgHandler.set('html', __t('Connecting…'));
                setTimeout(function(){
                    socket = io.connect('http://'+window.location.hostname+':'+ioPort);
                    initChatEvent( ioscript );
                    playSound('welcome');
                }, 1000);
            } else {
                ConnectingMsgHandler.set('html', __t('Waiting for the server to be ready…'));
                $('iojsloader').destroy();
                appendScript(ioscript);
                // retest to connect 90s later…
                setTimeout(function(){ initIO(); }, 9000);
            }   
        }, 1000);
    }

    function cidCheck(data){
        // checking integrity of content received÷
        // …
    }

    // ----------------------------------------------------------------
    // Events 

    function initChatEvent(){

        // sign-in onload
        socket.emit('new user', [currentUserId, currentChatId], function(data){
            if (data.cid != undefined){ currentCID = data.cid }
            if(cidCheck(data)){
                // launch chat UI…

            } else{

                alert(__t('Waiting for the server to be ready…'));

                clearInterval(timerInterval);
                var restartTimout = 30;
                setTimeout(function(){ initIO(); }, (restartTimout*1000))
                setTimeout(function(){
                    timerInterval = setInterval(function(){ $('ConnectingMsgHandler2').set('text', (restartTimout--)+'s') }, 1000);
                }, 3000);
            }
        });

        (…)
    }
});