2015-01-29 7 views
0

У меня есть рабочий HTTP-сервер Express, а также рабочий сервер веб-сервера. Я хочу добавить приложение websockets на свой обычный веб-сайт, который запускается HTTP-сервером, но я не уверен, что понимаю документацию. Могу ли я иметь сервер, который принимает несколько протоколов и как я буду обрабатывать маршрутизацию в такой ситуации? Документация npmjs для socketio говорит:поддерживает несколько протоколов на одном сервере

In conjunction with Express 
Starting with 3.0, express applications have become request handler functions that you pass to http or http Server instances. You need to pass the Server to socket.io, and not the express application function. 

var app = require('express')(); 
var server = require('http').createServer(app); 
var io = require('socket.io')(server); 
io.on('connection', function(){ /* … */ }); 
server.listen(3000); 

можно обрабатывать HTTP запросы через app.HTTPverbHere() и просит WebSocket через io.on?

ответ

1

socket.io documentation показывает точные шаги, необходимые для работы socket.io с nodejs express на том же сервере.

Итак, ДА, вы можете это сделать.

Фактически каждое подключение через webSocket начинается с HTTP-запроса (который затем обновляется до протокола webSocket), поэтому у вас должен быть веб-сервер, работающий на сервере, который все равно обрабатывает веб-узлы.

socket.io просто подключается к одному маршруту на экспресс-сервере, который используется для запуска всех соединений socket.io webSocket и обрабатывает вещи оттуда.

Вот один пример, взятый непосредственно из Socket.io документ:

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

app.listen(80); 

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

io.on('connection', function (socket) { 
    socket.emit('news', { hello: 'world' }); 
    socket.on('my other event', function (data) { 
    console.log(data); 
    }); 
}); 
Смежные вопросы