Czy jest możliwe użycie portu 80 zarówno dla ruchu HTTP, jak i sieciowego?
- buduję stronę, która używa gniazd sieciowych (technicznie gniazd Flash) w celu zapewnienia komunikacji w czasie rzeczywistym. Chcę wspierać ludzi stojących za korporacyjnymi/akademickimi firewallami, które blokują wszystko oprócz Portu 80.]}
- chciałbym móc uruchomić stronę z jednej maszyny
Poprzednio używałem Apache do serwowania HTTP w połączeniu z Pythonem nasłuchującym na wysoko ponumerowanym gnieździe dla rzeczy websocket, ale to oczywiście nie będzie pracuj tutaj.
Zawsze mogę przenieść rzeczy websocket na oddzielny serwer, ale chciałbym uniknąć płacenia za drugi VPS (i muszę rozmawiać z bazą danych przez sieć zamiast lokalnie). Czy jest na to dobry sposób (nodejs, nginx, ..?), a może nie warto bólu głowy?
6 answers
- http://code.google.com/p/pywebsocket/
- jakie popularne serwery mają wsparcie dla HTML5 WebSocket?
- https://serverfault.com/questions/201825/how-would-i-configure-a-websocket-server-to-run-alongside-a-webserver
Inną możliwością jest użycie mod_proxy w apache do przekierowania żądań na serwer websocket.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:26
Tak, używając węzła.js . Express lub connect dla obsługi pliku HTTP i socket.io Do Rzeczy WebSocket.
Przykład:
var express = require("express");
var app = express.createServer();
app.get('/', function(req, res){
res.redirect("/index.html");
});
app.configure(function(){
app.use(express.static(__dirname + '/public'));
});
app.listen(80);
var io = require('socket.io');
var socket = io.listen(app);
socket.on('connection', function(client){
client.on('message', function(){...});
})
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-11 19:53:00
Oczywiście, że dasz radę.
Najpierw musisz sprawdzić swoją wersję Apache. Powinieneś mieć wersję 2.4+. Pokażę wam komendę dla mojego serwera na Ubuntu 14.4.
Po Drugie, włącz niezbędne moduły apache:
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_wstunnel
Otwórz konf swojej domeny, w moim przypadku była to ścieżka do pliku:
/etc/apache2/sites-available/myDomain.pl.conf
Następnie dołącz ten kod
<VirtualHost>
.
.
.
RewriteEngine on
RewriteCond %{QUERY_STRING} transport=polling
RewriteRule /(.*)$ http://localhost:3001/$1 [P]
ProxyRequests off
ProxyPass /socket.io ws://localhost:3001/socket.io
ProxyPassReverse /socket.io ws://localhost:3001/socket.io
ProxyPass /socket.io http://localhost:3001/socket.io
ProxyPassReverse /socket.io http://localhost:3001/socket.io
</VirtualHost>
Finally restart your apache
service apache2 restart
Baw się dobrze!Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-03 19:12:51
GlassFish (i grizzly) obsługuje ruch HTTP i websockets na tym samym porcie, jeśli serwer java jest opcją.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-22 03:08:02
Dla bezpiecznego websocket, wszystko, co musiałem zrobić, to dodać te trzy linie do mojego https virthualhost:
<VirtualHost *:443>
[...https config...]
SSLProxyEngine On
ProxyPass "/web_socket" "wss://localhost:7300/web_socket"
ProxyPassReverse "/web_socket" "wss://localhost:7300/web_socket"
</VirtualHost>
I włącz mod_proxy_wstunnel Apache module (używam apache 2.4.10):
a2enmod proxy_wstunnel
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-18 09:13:13
Krótka odpowiedź brzmi nie, ponieważ możesz mieć tylko jeden proces nasłuchujący na jednym porcie. Możesz spróbować użyć portu 443, ponieważ ten również nie zostanie zablokowany, o ile nie używasz https.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-11 19:44:06