Я пытаюсь настроить сервер с помощью socket.io с плохими результатами.
Я в основном следую этому руководству, хотя он несколько устарел: http://www.williammora.com/2013/03/nodejs-tutorial-building-chatroom-with.html
Проблема связана с socket.io, я не уверен, что это клиент или сервер. Кажется, он пытается постоянно опробовать сервер, но возвращается на 404. Похоже, что socket.io не работает, но все выглядит хорошо для меня. Он также может иметь какое-то отношение к путям и иметь "общедоступный" каталог, но я действительно не знаю.
127.0.0.1 - - [Thu, 17 Jul 2014 00:51:36 GMT] "GET /socket.io/?EIO=2&transport=polling&t=1405558296120-0 HTTP/1.1" 404 73 "http://localhost:8080/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.76.4 (KHTML, like Gecko) Version/7.0.4 Safari/537.76.4"
127.0.0.1 - - [Thu, 17 Jul 2014 00:51:37 GMT] "GET /socket.io/?EIO=2&transport=polling&t=1405558297181-1 HTTP/1.1" 404 73 "http://localhost:8080/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.76.4 (KHTML, like Gecko) Version/7.0.4 Safari/537.76.4"
127.0.0.1 - - [Thu, 17 Jul 2014 00:51:39 GMT] "GET /socket.io/?EIO=2&transport=polling&t=1405558299207-2 HTTP/1.1" 404 73 "http://localhost:8080/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.76.4 (KHTML, like Gecko) Version/7.0.4 Safari/537.76.4"
Сервер
var exec = require( "child_process" ).exec;
var path = require( "path" );
var morgan = require( "morgan" );
var bodyParser = require( "body-parser" );
var _ = require( "underscore" );
var express = require( "express" );
var app = express();
var http = require( "http" ).createServer( app );
var io = require( "socket.io" )( http );
app.set( "ipaddr", "127.0.0.1" );
app.set( "port", 8080 );
//support JSON, urlencoded, and multipart requests
app.use( bodyParser() );
//log the requests using morgan
app.use( morgan() );
//specify the Jade views folder
app.set( "views", __dirname + "/../views" );
//set the view engine to Jade
app.set( "view engine", "jade" );
//specify static content
app.use( express[ "static" ]( "public", __dirname + "/../public" ) ); //using map-access of static so jslint won't bitch
io.on( "connection", function( socket )
{
console.log( "A user connected." );
});
Client
script( src="js/socket.io.js" )
var socket = io.connect( "http://localhost:8080" );
Я получил файл js клиента от: node_modules/socket.io/node_modules/socket.io-client/socket.io.js
Этот путь не соответствует ни тем, что говорит учебник, который я использую, или тому, что говорит socket.io, поэтому, возможно, эта проблема, но похоже, что это, вероятно, правильный файл.
Любая помощь здесь?
ИЗМЕНИТЬ Для получения дополнительной информации, вот моя иерархия папок:
Webserver/
my_modules/
server.js
node_modules/
body-parser/
express/
jade/
morgan/
socket.io/
underscore/
public/
css/
js/
server.js
views/
index.jade
index.js
package.json
Сервер .js в папке my_modules - это где я запускаю socket.io на стороне сервера. Server.js в папке js - это клиентский код для подключения с веб-сайта.