2014-09-26 2 views
2

Я получаю 404 на URLs, как это: http://localhost.dev/socket.io/?EIO=3&transport=polling&t=1411749802784-54socket.io делает 404 запросов

SOCKET IO версия: 1.x

APP.JS

var express = require("express"), 
    app  = express(), 
    server = require('http').createServer(app), 
    io  = require('socket.io').listen(server), 

server.listen(8080); 

app.get('/', function(req,res){ 
    console.log('started'); 
}); 

//Receive message 
io.sockets.on('connection',function(socket){ 
    socket.on('send message',function(data){ 
     //Send message out 
     io.sockets.emit('new message',data); 
    }); 
}); 

Так что я мой сайт, который работает на port 80 и nodejs на порту 8080, и я включаю файл socket.io js следующим образом: <script src="http://localhost.dev:8080/socket.io/socket.io.js"></script>, и я могу открыть socket.io.js файл в новой вкладке, но я думаю, что это имеет какое-то отношение к новой версии, я просто начинаю с узла.

// LE

$(document).ready(function(){ 
    //Socket.io 
    var socket = io.connect(); 
    //Form 
    var $messageForm  = $('#chatForm'); 
    var $messageFormInput = $messageForm.find('#messageText'); 
    var $chat    = $('.chat'); 

    //Bind submit form 
    $messageForm.submit(function(e){ 
     e.preventDefault(); 
     socket.emit('send message',$messageFormInput.val()); 
     //Clear input 
     $messageFormInput.val(''); 
    }); 

    //Receive message 
    socket.on('new message',function(data){ 
     $chat.append(data); 
    }); 









}); 

Кто-нибудь знает, как я могу это исправить?

+0

Если вы получаете 404 ошибки в консоли на 'HTTP: //localhost.dev/socket.io/ EIO = 3 & транспорт = опроса и т = 1411749802784-54' то вы не можете добавьте скрипт из порта 8080 правильно на своей странице. Тот факт, что URL не является «http: //localhost.dev: 8080/socket.io /», является довольно хорошим индикатором того, что что-то фанки происходит с URL-адресом, а не node/socket.io – Brian

+0

Как вы можете видеть так или иначе он не делает запрос на порт ': 8080', если вы посмотрите на первый 404-адрес URL-адреса – Uffo

+0

. Вы дважды проверили свой источник HTML (просмотрев исходный код или проверив с помощью инструментов консоли разработчика), чтобы убедиться, что тег скрипта, который просматривает браузер на самом деле есть 8080 на нем? Если в теге скрипта указано 8080, запрос должен быть равен 8080. Либо это, либо у вас есть плагин в вашем браузере, заставляя его игнорировать порт. Браузер не будет игнорировать порт 8080 по URL-адресу сам по себе. – Brian

ответ

3

Попробуйте

var socket = io.connect('http://localhost.dev:8080'); 
+0

В этом проблема. Сама веб-страница загружается более чем 80 (по умолчанию), но socket.io прослушивает более 8080. Таким образом, страница хочет запросить URL-адреса с 80, но нужно использовать 8080 – Brian

+0

Это не работает ... Я все еще получаю 404 , @ jfriend00 узел и сервер apache находятся на разных портах – Uffo

+0

@Uffo - если они находятся на разных портах, вам нужно будет указать порт при подключении от клиента. 'io.connect()' сам по себе подключается к порту, с которого была загружена веб-страница. Он не знает, где находится сервер websocket, если он не находится на том же хосте и порту, с которого была загружена веб-страница. – jfriend00

Смежные вопросы