Node.js + Socket IO + Apache + PHP从url中删除端口?

时间:2011-12-20 18:10:25

标签: php jquery apache node.js socket.io

我有一些关于在PHP上使用套接字IO的问题,我是nodejs / socket io的新手,所以我知道的很少,过去几天我刚刚开始使用它,我已经到了这一步我将在我的网站上实现这一点(截至目前我刚刚构建了一些测试示例)。

问题:目前我必须将端口添加到我的localhost才能查看它并让它工作,显然我不能拥有它,当它是一个实时网站时,我也不能这样做当我使用php页面(只是用html做的例子)如果我在我的socket 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>

1 个答案:

答案 0 :(得分:3)

我认为您的意思是您不想在客户端硬编码端口或网址?是对的吗?

在socket.io 0.8.7中,您不需要提供它。您只需使用以下内容即可自动检测

var socket = io.connect();