Node.js + Socket IO + Apache + PHP удалить порт из URL? - PullRequest
5 голосов
/ 20 декабря 2011

У меня есть несколько вопросов, касающихся использования сокетного ввода-вывода с PHP, и так далее, я новичок в nodejs / socket io, поэтому я очень мало знаю, я только начал использовать его в течение последних нескольких дней, и я подошел к сути где я буду реализовывать это на своем веб-сайте (на данный момент я только что создал небольшие тестовые примеры).

Вопрос: В настоящее время я должен добавить порт к своему локальному хосту, чтобы просмотреть его и заставить его работать, очевидно, у меня не может быть этого, когда это живой сайт, и я также не могу сделать это, когда я использую php страницы (только что делал примеры с html) Если я использую порт 4000 для моего сервера сокетов io, я должен перейти на: 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 Ответ

3 голосов
/ 22 декабря 2011

Я думаю, вы имеете в виду, что вы не хотите жестко кодировать порт или URL в клиенте?Это правильно?

В socket.io 0.8.7 его не нужно указывать.Вы можете просто использовать следующее, и оно будет автоматически определено

var socket = io.connect();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...