Невозможно получить доступ к 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.