2013-10-11 3 views
2

EDIT 1:socket.io не может заставить его работать

Ok, проблема с сервером решена. Это полный код сервера, интегрированный в мой проект.

var http =    require('http'); 
var express =   require('express'); 
var requestHandler = require(__dirname + '/app_modules/request-handler.js'); 
var app =    express(); 

app.configure(function(){ 
    app.use(express.static(__dirname + '/html')); 
    app.use(express.bodyParser()); 
}); 

var httpServer = http.createServer(app); 
httpServer.listen(80); 

var io = require('socket.io').listen(httpServer); 

io.on('connection', function(socket){ 
    socket.on('event', function(data){ 

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

    }); 
}); 

Следующая проблема включает источник .js на моей статической странице html. Это выдает ошибку:

<script src="/socket.io/socket.io"></script> 

Resource interpreted as Script but transferred with MIME type text/plain: "http://localhost/socket.io/socket.io". localhost/:206 
Uncaught SyntaxError: Unexpected identifier socket.io:1 
Uncaught ReferenceError: io is not defined 

ОРИГИНАЛ ПРОБЛЕМА:

Я пытаюсь получить эту присоску работает на тестовом сервере. Это 1: 1, прямо из socket.io docs на github.

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

io.on('connection', function(socket){ 
    socket.on('event', function(data){ 

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

    }); 
}); 

server.listen(3000); 

Вот что я получаю:

[INFO] 19:37:40 Restarting 
[ERROR] 19:37:40 TypeError 
TypeError: object is not a function 
    at Object.<anonymous> (/Users/me/work/github/node-forever-gui/server/socket_test.js:3:30) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Object..js (/usr/local/lib/node_modules/node-dev/lib/hook.js:52:17) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.require (module.js:364:17) 
    at require (module.js:380:17) 
    at Object.<anonymous> (/usr/local/lib/node_modules/node-dev/lib/wrap.js:47:1) 
    at Module._compile (module.js:456:26) 

Все модули устанавливаются через НПМ. Пожалуйста, помогите мне понять это!

+0

Что находится в строке 3 колонки 30? Это ваш 'полный файл socket_test.js' (верхний блок кода) –

+0

socket_test.js - это первый код, который я опубликовал. –

+0

http://socket.io/ В своем примере они показывают 'require ('socket.io'). Listen (80)' idk, если вы можете объединить узел http-сервера с socket io. Сначала попробуйте 80. –

ответ

9

В точности то, что указано, io не является функцией, и вы не можете передать ему объект HTTP. Вместо этого используйте метод listen для подключения Socket.IO к экземпляру HTTP.

var io = require('socket.io').listen(server); 

Для вашей второй ошибки файл является скриптом и имеет расширение. Добавьте ссылку .js.

<script src="/socket.io/socket.io.js"></script> 
+0

Это похоже на работу, см. Мой отредактированный вопрос. –

+0

Отредактированный ответ - вы не считаете скрипт правильно. – hexacyanide

+0

Да, это была проблема. Глупая ошибка, спасибо :) –

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