Невозможно получить доступ к socket.io.js в Raspberry Pi с Lighttpd [Node.JS & Socket.IO]

Я совершенно новичок в Node.JS и Socket.IO со вчерашнего дня.

Я пытаюсь заставить Node.JS и Socket.IO работать на моем Raspberry Pi, но этого не происходит. Я не могу получить доступ к <myip>:1337/socket.io/socket.io.js , Я следовал этому руководству, поэтому мой файл Lighttpd.conf выглядит так:

$HTTP["host"] == "<myURLtomywebsite>" {
    proxy.server = (" " => ((
        "host" => "<myIP>",
        "port" => 1337)
    )
)

мой server.js выглядеть так:

var http = require('http');

httpServer = http.createServer(function(req, res) {
    res.end('Hello World!');
});

httpServer.listen(1337);

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

io.sockets.on('connection', function(socket) {
    ++clients;

    socket.on('disconnect', function(data) {
        --clients;
        io.sockets.emit('disusr', clients);
    });

    io.sockets.emit('newusr', clients);
});

И я связываю с disusr а также newusr события в моем client.js отображать количество подключенных пользователей в div,

Все выглядит хорошо на моем localhost но в производственной среде я не могу связаться с моим socket.io.js файл на 1337 порт. Если честно, я даже не уверен, какой адрес использовать? (URL моего сайта добавлен с :1337, localhost какой другой адрес я бы создал?)

Любая помощь приветствуется. Спасибо!

1 ответ

Решение

Я решил свою проблему!

Я связал socket.io.js вот так: <script type="text/javascript" src="/socket.io/socket.io.js"></script>

Я использовал HAProxy вместо Lighttpd mod_proxy, как указано в этом вопросе

Вот мой файл conf (изменить <...> согласно вашей конфигурации):

# this config needs haproxy-1.1.28 or haproxy-1.2.1

global
  log  127.0.0.1  local0
  log  127.0.0.1  local1 notice
  maxconn  4096
  uid  99
  gid  99
  daemon

defaults
  log   global
  mode  http
  option  httplog
  option  dontlognull
  retries  3
  option http-use-proxy-header
  option  redispatch
  option  http-server-close
  maxconn  2000
  contimeout  5000
  clitimeout  50000
  srvtimeout  50000

frontend public
  bind *:80
  acl is_example hdr_end(host) -i <URL.toyourwebsite.com>
  acl is_websocket hdr(Upgrade) -i WebSocket
  acl is_websocket path_beg -i /websockets
  use_backend ws if is_websocket is_example
  default_backend www

backend ws
    balance roundrobin
    option forwardfor # This sets X-Forwarded-For
    timeout queue 5000
    timeout server 86400000
    timeout connect 86400000
    server apiserver localhost:<PORT> weight 1 maxconn 1024 check

И я заставил Lighttpd прослушивать порт 8080 (иначе HAProxy не запустился бы).

Напомним, что нет необходимости использовать mod_proxy, так как известно, что он не совместим с веб-сокетами. Вместо этого используйте HAProxy.

Другие вопросы по тегам