2016-09-22 4 views
0

Эй, я новичок в сокете и узле, и я играю с чатом, используя socket.io.Socket.io integration Node

Вот мой index.js файл:

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

app.get('/', function(req, res) { 
    //route handler serve index.html file 
    res.sendFile(__dirname + '/index.html'); 
}); 

io.on('connection', function(socket) { 
    console.log('A user has connected'); 
    socket.on('disconnect', function() { 
     console.log("A user has disconnected"); 
    }) 
}) 

http.listen(3000, function() { 
    console.log('listening on port 3000'); 
}); 

** Вот мой index.html: **

<html> 
<head> 
    <title> Chat </title> 
    <script src="https://cdn.socket.io/socket.io-1.0.0.js"></script> 
    <script> 
     var socket = io(); 
    </script> 
</head> 
<body> 
    <ul id="messages"></ul> 
    <form action=""> 
     <input id="m" autocomplete="off"/> <button> Send </button> 
    </form> 
</body> 

я получаю Опорной ошибки говоря что io не определено. Я попытался связать сокет как cdn и как мой url сервера.

+1

Требуется также socket.io на сервере. Попробуйте установить socket-io и добавьте следующий код '' 'var io = require ('socket.io') (app);' ''. –

+0

@ HimaniAgrawal спасибо, это сработало! – rxa

ответ

1

Вам нужно загрузить и инициализировать Socket.io на стороне сервера:

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

// add this line 
var io = require('socket.io')(http); 

Это загружает модуль Socket.io, Регистра его с помощью веб-сервера, чтобы он мог вклиниться в него, а затем объявляет и правопреемников переменная io.

P.S. Ваш клиент ссылается на socket.io 1.0.0, который на данный момент является довольно старой версией. Вы должны, вероятно, пусть ваш сервер ручки Socket.io обслуживающую Socket.io клиента при смене клиента сценария тег к этому:

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

Это будет автоматически служить клиенту соответствующую версию Socket.io, которая находится на вашем сервере (поэтому они всегда будут синхронизироваться с той же версией). Это работает, потому что одна из вещей, которую делает require('socket.io')(app), это регистрация обработчика маршрута для /socket.io/socket.io.js.

+0

var io = require ('socket.io') (http); сделал трюк для меня, спасибо! Поэтому в основном мне нужно ссылаться на него как на стороне клиента, так и на стороне сервера? – rxa

+0

@rxa - Ну, вы должны инициализировать socket.io как на стороне клиента, так и на стороне сервера. – jfriend00

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