2011-12-20 5 views
5

PHPでソケットIOを使用することに関するいくつかの質問があります。私はnodejs/socket ioを初めて使用しているので、ごくわずかなことしか知らないので、ここ数日で使用し始めました。私はこれを私のウェブサイトに実装する予定です(今のところ私は少しのテスト例を構築しています)。Node.js +ソケットIO + Apache + PHPはURLからポートを削除しますか?

質問:現時点では、ポートを表示して機能させるために、ポートをローカルホストに追加する必要があります。ライブWebサイトではこれを実行できません。また、使用するとこれを行うこともできません。私のソケットioサーバーにポート4000を使用している場合、私は:localhost:4000に行かなければなりませんが、私はここに行くことができる必要があります:localhost:8888/mysitefolder(8888私のMAMPのためのポート、PHP用など)私は人々がこれを解決した質問で見ましたが、私は自分のために働くことができませんでした。ここで

は私のコードは次のとおりです。

chat.js

var app = require('express').createServer(), 
     io = require('socket.io').listen(app); 

app.listen(4000); 


var users = []; 

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

io.sockets.on('connection', function (socket) { 

socket.emit('connected'); 

socket.on('userID', function (userID) { 
users.push(userID); 
}); 


socket.on('message', function (message) { 
socket.broadcast.emit('message-response', { data: message}); 
}); 

}); 

index.htmlを

<title>Testing</title> 
<script src="/socket.io/socket.io.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script> 

function mktime(){ 
    var newDate = new Date; 
    return newDate.getTime(); 
    } 

    function appendMessage(data) 
    { 
    $("body").append(data+"<br />"); 
    } 

    var socket = io.connect('http://localhost:4000'); 
    socket.on('connected', function() { 

    //select id from database in real environment 
    socket.emit("userID", mktime()); 

    }); 



    socket.on('message-response', function (message) { 

    appendMessage(message.data); 

}); 


    $(document).ready(function(){ 
     $('#input').keypress(function(event) { 
     if (event.keyCode != 13) return; 
      var msg = $("#input").val(); 

      if (msg) { 


     socket.emit('message', msg); 
     appendMessage(msg); 

     $("#input").val('').focus(); 
     } 
    }); 
    }); 



    </script> 

    <body> 
    <input type="text" id="input"><br> 
    </body> 
+0

「私は行けるようにする必要がありますか?」とはどういう意味ですか?「localhost:8888/mysitefolder」?あなたがする必要があるのは、jsファイルを "localhost:4000/socket.io/socket.io.js"のように正しく参照することだけです。エクスプレスサーバーは必要なく、JSコードでインデックスファイルを提供することもできます。 – alessioalex

+0

よくlocalhost:8888は、MAMPが動作する場所で、PHPとすべてのために、mysitefolderはphpファイルが動作するためのフォルダです。 また、2つのファイルで何が変更されますか?私はすぐに試しましたが、エラーがあります。 (私が言ったように、私はこれで新しいので、すべての仕組みがわからない) –

+0

心配しないで、私はそれを働かせた。ありがとう。 –

答えて

3

私はあなたがハードコードにポートまたはURLを望んでいないことを意味だと思いますクライアント?そうですか?

socket.io 0.8.7では、入力する必要はありません。あなたは次のものを使うだけで、それは自動検出されます。

var socket = io.connect(); 
+0

それは私にとってはうまくいきませんでした。 –

+0

こんにちはディラン、私はあなたの要求をすぐに得ましたか?私はURLとポートを提供しないemitを使って、動作しているsocket.ioを持っています。私はクライアントではなくサーバー側のポートしか提供しません -

+0

これは私の最初の問題ではなかった、私の最初の問題は、バーのURL自体にポートがある。私はsocket.ioスクリプトを参照していたため、それがなくても作業ができなかった唯一の理由は分かりませんでした。ソリューションは変更されました: to:

関連する問題