2016-01-13 7 views
0

Привет, у меня возникли проблемы с получением сокета io для работы за пределами примера из их учебника. Проблема заключается в том, когда я хочу, чтобы вызвать chatDiv.html с сайта на локальный сервер ApacheSocket IO not found (404)

У меня есть сервер элемента дерева называется расслоение плотной index.js

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 

app.use(function (req, res, next) { 

// Website you wish to allow to connect 
res.setHeader('Access-Control-Allow-Origin', 'http://localhost'); 

// Request methods you wish to allow 
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); 

// Request headers you wish to allow 
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); 

// Set to true if you need the website to include cookies in the requests sent 
// to the API (e.g. in case you use sessions) 
res.setHeader('Access-Control-Allow-Credentials', true); 

// Pass to next layer of middleware 
next(); 
}); 

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

io.on('connection', function(socket){ 
console.log('a user connected'); 
    socket.on('chat message', function(msg){ 
    io.emit('chat message', msg); 
    console.log(msg); 
    }); 
}); 

http.listen(3000, function(){ 
    console.log('listening on *:3000'); 

клиента файл загружен на сервер chatDiv. HTML

<script src="http://localhost:3000/socket.io/socket.io.js"></script> 
<script src="http://code.jquery.com/jquery-1.11.1.js"></script> 
<div class="chat body"> 
<ul style="width:100%;height:100px;" id="messages"></ul> 

<input style="width:100px;height:20px"id="m" autocomplete="off"> </input><button id="sendM" >Send</button> 

</div> 

Наконец я хочу, чтобы взаимодействовать с сокетом гипергликемии с моего сервера Apache я сделать это путем загрузки содержимого chatDiv.html в контейнер, как так

<script src="http://localhost:3000/socket.io/socket.io.js"></script> 
$(document).ready(function() { 
$("#chatContainer").load("http://localhost:3000/", function() { 
    console.log('loaded chatdiv'); 
    var socket = io(); 
    $("#chatContainer").on("click", "#sendM", function() { 
console.log('clicked'); 
}); 
}); 
}); 

Теперь содержимое chatDiv загружается на мой сайт, и я могу увидеть загружаемый файл сокета. Но он получает ошибку при вызове var socket = io();

GET http://localhost/socket.io/?EIO=3&transport=polling&t=L8zL8x0 404 (Not Found) 

ответ

0

Можете ли вы указать, какая у вас ошибка? Возможно, вам понадобится обернуть блок try-catch вокруг вашего io(), чтобы узнать, дает ли он вам какой-либо намек. Я подозреваю, что это имеет какое-то отношение к вашим привилегиям доступа к порталу или настройкам брандмауэра.

пример:

$(document).ready(function() { 
    $("#chatContainer").load("http://localhost:3000/", function() { 
     console.log('loaded chatdiv'); 
     try{ 
      var socket = io(); 
     } 
     catch(e){ 
      //log the error here 
      console.log(e); 
     } 
     $("#chatContainer").on("click", "#sendM", function() { 
      console.log('clicked'); 
     }); 
    }); 
}); 
+0

ошибка была GET HTTP: //localhost/socket.io/ EIO = 3 & транспорт = опроса и т = L8zL8x0 404 (Not Found) или вам это нужно, чтобы быть более конкретным? ? – user2202098

+0

Вы пробовали "sudo" как admin? – YooManFoo