我使用此链接访问了我的客户端页面
http://XX.XX.XX.XX/project/client.php
。它有几行javascript和html但它根本不起作用。但是当我使用此链接访问我的客户端页面时
http://localhost/project/client.php
,它有效。我知道我应该在javascript代码中更改但我不知道是什么。所以请告诉我。这是我的客户代码:
<html>
<head>
<style>
#chatlog {width:440px; height:200px; border:1px solid;overflow:auto;}
#userslog {width:440px; height:200px; border:1px solid;overflow:auto;}
#msg {width:330px; height:100px;}
</style>
<script>
function initialize(){
var host = "ws://localhost:12345/project/server3z.php";
try{
socket = new WebSocket(host);
chatlog('WebSocket - status '+socket.readyState);
socket.onopen = function(event){chatlog("WebSocket status "+this.readyState); };
socket.onmessage = function(event){ chatlog(event.data); };
socket.onclose = function(){ chatlog("WebSocket status "+this.readyState); };
socket.onerror = function(event){chatlog("Error :"+event.data); };
}
catch(err){ chatlog(err); }
}
function send()
{
var chat;
chat= document.getElementById("msg").value;
if(!chat){ alert("Message can not be empty"); return; }
try{ socket.send(chat); chatlog('Sent: '+chat); } catch(err){ log(err); }
document.getElementById("msg").value = "";
}
function quit(){
chatlog("closed!");
socket.close();
chatlog("WebSocket status "+socket.readyState);
}
function chatlog(msg)
{
var match=msg.match(/10101010101010/g);
if(match)
{
var msg=msg.split("10101010101010");
document.getElementById("userslog").innerHTML+="<br>"+msg[0];
}
else
{
document.getElementById("chatlog").innerHTML+="<br>"+msg;
}
}
function onkey(event){ if(event.keyCode==13){ send(); } }
</script>
</head>
<body onload="initialize()">
<center>
<div id="chatlog"></div>
<input id="msg" type="textbox" onkeypress="onkey(event)"/>
<button onclick="send()">Send</button>
<button onclick="quit()">Stop</button>
<div id="userslog"></div>
</center>
</body>
</html>
答案 0 :(得分:6)
请勿将主机硬编码为localhost
,而是使用location.hostname
:
var host = "ws://" + location.hostname + ":12345/project/server3z.php";
答案 1 :(得分:1)
您正在使用WebSocket您确定您的浏览器在其他PC中支持HTML5和WebsoCKET吗?
WebSocket早期推出
答案 2 :(得分:0)
这一行我遇到问题var host = "ws://localhost:12345/project/server3z.php";
localhost默认表示您的本地计算机。因此,当您从本地计算机访问它时,它会映射到正确的计算机,但是当您从远程服务器访问它时,它只搜索该服务器,因为现在本地主机已更改
答案 3 :(得分:0)
在您的代码中,您有对本地主机上的网址的硬编码引用:
var host = "ws://localhost:12345/project/server3z.php";
如果要从另一台计算机访问它,则需要将其替换为远程客户端可以解析的域或IP地址。
答案 4 :(得分:0)
谢谢你的回答!! :)
疯了是对的。我使用的IE不支持websocket。它现在在我的mozila工作。