Javascript 代理背后的Nodejs实时聊天客户端
我正在建立一个基于nodejs和专业用法的现场聊天。除了一些客户公司的计算机(大多数是在WindowsXP和IE8上),这种方法工作正常 该客户访问了我的Apache服务器,加载包含聊天的HTML并调用下面的Javascript。不幸的是,它从未到达socket.io脚本: 注意:我使用websocket端口843试图避免防火墙问题(如果客户使用) 我想这可能是他们的内部网络到达我们的服务器的问题(可能是由内部代理/或防火墙引起的),但我不能确定,因为我无法从他们那里得到真正的反馈。所以说实话,我无法解决这个问题 这个发现是一个好消息,可以测试它是否能解决我的问题。不幸的是,这个项目似乎并不是为web应用程序的使用而构建的(需要使用,很多节点模块依赖性…) 我的客户代码的简单摘要如下: 在HTML页面底部加载的脚本,如使用 如果您认为该问题也可能是由公司代理引起的,您有什么建议可用于嵌入网页吗? 使用我自己的chatux.js 可能有人遇到了同样的问题,可能还有其他线索需要调查? 这个项目是我第一次体验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应用程序和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);
}
});
(…)
}
});