2015-01-20 4 views
2

Я использую NGINX для обработки моих серверов Nodejs, и теперь я хочу начать использовать socket.io на них, проводя исследования, прежде чем начать играть с сокетом. io i нашел Sailsjs, который я довольно быстро нашел и теперь использую.Nodejs (sailsjs), NGINX и sails.io (socket.io)

Проблема, с которой я встречаюсь, заключается в том, что клиент не может подключаться через NGINX на socket.io или sails.io.

Это URL путь для моего текущего APP: https://localhost/economy

И URL для sails.io это, как стандарт: https://localhost/economy/assets/js/dependencies/sails.io.js

сейчас! Использование FileSeek Я узнал, где sails.js использует «require (« socket.io »)», который находится в «loadSocketIO.js» (node_modules \ sails \ lib \ hooks \ sockets \ lib). Я редактировал файл сказать:

var io = sails.io = sails.ws = 
    SocketServer.listen(sails.hooks.http.server, { 
    resource: 'economy', 
     logger: { 
      info: function(){} 
     } 
    }); 

добавив ресурс: 'экономика', линию. Тогда на стороне клиента, я сделал то же самое:

var socket = io.connect('https://localhost/economy/socket.io', { resource: 'economy' }); 

Я играл с этим и пытались различными способами, как «экономика/Socket.io», полный путь Socket.io и т.д.

Любая помощь, это большая помощь!

Я изо всех сил в течение дня в настоящее время, так что я понял, я бы попросить о помощи :)

ответ

2

РЕШЕНИЕ!

Запустите все как есть, единственная часть, которую вы должны отредактировать, находится в NGINX.

установлен блок сервера с имясервером как economy.localhost /, и вы сделали :) Не забудьте связать economy.localhost с 127.0.0.1 или установить CNAME, если это производство сервер :)

+0

Можете ли вы рассказать об этом, пожалуйста? Я действительно новичок в nginx. – L4reds

+0

В основном; вам нужно создать субдомен с помощью NGINX и передать его потоку. – andersfylling

3

Вам не нужно ничего менять на стороне Sails. Попробуйте прочитать на proxy_pass для своей директивы о местонахождении в Nginx.

http://nginx.org/en/docs/http/websocket.html

Это отрывок из приведенной выше ссылке:

location /chat/ { 

    proxy_set_header  X-Real-IP  $remote_addr; 
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 

    proxy_pass http://localhost:1337; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
} 
+0

прочитал ответ, что я написал: P – andersfylling

+1

@sciencefyll Я сделал. Вот почему я написал ответ, который я сделал. – HeadCode

+0

Не могли бы вы редактировать @HeadCode. Я хотел бы подтвердить, что я поддержал вас. –

0

пример показал here работал для меня.

В основном для Поддержка nginx WebSocket вам необходимо включить следующую конфигурацию.

server { 
    server_name app.domain.com; 
    location/{ 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
     proxy_http_version 1.1; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $host; 
     proxy_pass http://localhost:8080; 
    } 
} 
Смежные вопросы