Не удается подключиться и получить «необработанный сокет».ошибка ввода-вывода url с помощью MAMP Socket.io (node.js )

#codeigniter #node.js #mamp #socket.io

#codeigniter #node.js #mamp #socket.io

Вопрос:

Я разрабатываю приложение с использованием CodeIgniter на сервере MAMP (для разработки оно будет работать на LAMP). Я пытаюсь добавить функциональность сокета в реальном времени.ввод-вывод для сервера чата, но у меня возникли некоторые проблемы. У меня есть сокет.io и MAMP запускаются и работают независимо, но я не могу заставить своего клиента общаться с моим сервером.

server.js:

 // Get the Socket.io module
var io = require('socket.io');

console.log ( 'Chat Server started' );

// Create a Socket.IO instance, listen on 8084
var socket = io.listen(8084);

// Add a connect listener
socket.on('connection', function(client){ 

  console.log ( "Server Connected" );

});
  

Мой клиентский скрипт ( socket.io.js загружается нормально, и моя консоль выдает сообщение «debug: обслуживаемый статический контент» всякий раз, когда я загружаю страницу):

 <script src="http://localhost:8084/socket.io/socket.io.js"></script>
<script type="text/javascript"> 
    // Create SocketIO instance, connect
    var socket = new io.Socket('localhost',{
      port: 8084
    });
    socket.connect(); 

    socket.on ( 'connect', function () { console.log ( 'Client connected' ); } );
</script>
  

После запуска node.js файл, я получаю это в своей консоли:

 Chat Server started
info  - socket.io started
  

После загрузки клиента (направляя мой браузер на http://localhost:8888 — порт по умолчанию для MAMP), я не получаю ни одного сообщения консоли, но вместо этого постоянный поток этого (примерно каждую секунду):

 info  - unhandled socket.io url
  

Похоже, что он вообще не подключается. Кроме того, в моей консоли ошибок JS в браузере нет ошибок. Есть идеи?

Комментарии:

1. Я бы начал с попытки / перехвата ваших подключений, чтобы узнать, не генерируются ли какие-либо исключения.

2. try { socket.connect() } catch (err) { alert ( err ); } Нет предупреждения.

3. Вы включаете JavaScript с порта 3478, прослушиваете сокет. Ввод-вывод на порт 8084 и отправка содержимого на 8888. Является ли одно из них неправильным? Я чувствую, что более новые версии сокета. IO не нужны параметры конфигурации для new io.Socket — он определяет это на основе того, как был включен JS.

4. Я думаю, лучший вопрос в том, какая версия сокета. Ввод-вывод, который вы используете? 🙂

5. @brandon Да, это была просто опечатка, поскольку я пытался устранить неполадки. Я перепробовал много разных портов (убедившись, что они все одинаковые), но безрезультатно. Что касается версии: Socket.IO.js сборка: 0.8.5, разработка

Ответ №1:

Запуск сокета.версия ввода-вывода 0.8.5, я, наконец, получил эту работу, используя следующий код:

server.js

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

app.use(express.static(__dirname   '/public'));

app.get('/', function (req, res) {
    res.send('Hello World');
});

app.listen(3000);

var server = io.listen(app); 

server.sockets.on('connection', function (client){ 
    // new client is here!
    client.send ( 'Now connected!' );

    client.on('message', function () {

    }) ;

    client.on('disconnect', function () {

    });

});
  

клиентский скрипт:

 <script src="http://localhost:3000/socket.io/socket.io.js"></script>
<script src="/assets/js/jquery-1.6.4.min.js"></script>
<script type="text/javascript"> 

    $(document).ready(function(){

        var socket  = io.connect('http://localhost:3000'),
        text = $('#text');

        socket.on('connect', function () {
            text.html('connected');
            socket.on('message', function (msg) {
                text.html(msg);
            });
        });

        socket.on('disconnect', function () {
            text.html('disconnected');
        });

    });

</script> 
  

Когда все запущено и запущено, перейдя на мою страницу, я почти сразу вижу «Теперь подключен!». Я также обслуживаю свою страницу через CodeIgniter на MAMP — все работает!