0

このリンクを使用してクライアント ページにアクセスしました

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>
4

5 に答える 5

6

ホストを にハードコーディングしないでください。代わりに次localhostを使用してください。location.hostname

var host = "ws://" + location.hostname + ":12345/project/server3z.php";
于 2013-05-09T16:12:58.643 に答える
1

WebSocket を使用していますが、他の PC のブラウザーが HTML5 と WebsoCKET をサポートしていることは確かですか?

WebSocket は早期に導入されました

于 2013-05-09T16:13:46.697 に答える
0

ご回答ありがとうございます !!:)

マッドシューは正しかった。websocketをサポートしていないIEを使用していました。現在、私のモジラで動作しています。

于 2013-05-09T16:20:28.457 に答える
0

この行 i sthe problem var host = "ws://localhost:12345/project/server3z.php"; localhost は、デフォルトではローカル マシンを意味します。したがって、ローカルマシンからアクセスすると正しいマシンにマップされますが、リモートサーバーからアクセスすると、ローカルホストが変更されたため、そのサーバーを検索するだけです

于 2013-05-09T16:13:09.493 に答える
0

コードには、ローカル ホストの URL へのハードコーディングされた参照があります。

var host = "ws://localhost:12345/project/server3z.php";

別のコンピューターからアクセスする場合は、リモート クライアントが解決できるドメインまたは IP アドレスに置き換える必要があります。

于 2013-05-09T16:13:44.780 に答える