Comments (17)
Что, кстати, указывать в proxy_pass - адрес:порт с websocket или localsocket ?
websocket
from websocket.
https://github.com/morozovsk/websocket/wiki/Together-with-nginx
from websocket.
Опять таймаут
У нас такой конфиг без ssl:
location /websocket {
#limit_conn perip 5; #set limit to 5 connection from 1 ip
proxy_pass http://127.0.0.2:8004;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600s; #increase timeout to 1 hour
}
с ssl:
location /websocket {
#limit_conn perip 5; #set limit to 5 connection from 1 ip
proxy_pass https://127.0.0.2:8004;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600s; #increase timeout to 1 hour
}
Вот ошибка в логе:upstream prematurely closed connection while reading response header from upstream
from websocket.
Здравствуйте. А вы не замеряли время, за которое отрабатывает ваш код на стороне сервера? может дело в том, что много времени уходит на работу php?
from websocket.
Если использовать http, то все работает, но на https вот так. Не думаю что в этом дело.
from websocket.
а у вас в секции
server {
ssl_certificate .ssl/geotrust.amix24.com.crt;
ssl_certificate_key .ssl/geotrust.amix24.com.key;
}
подобные записи есть? то есть, сам ssl сертификат подключили?
from websocket.
Сертификат подключен и работает.
from websocket.
попробуйте в адресе прописать wss://.../websocket:443
from websocket.
Не помогло
from websocket.
Вот ошибка в логе:upstream prematurely closed connection while reading response header from upstream
в логе чего? если в логе nginx, то у вас на указанном ip:port ничего не запущено
возможно вы имели ввиду 127.0.0.1, а не 127.0.0.2 ?
В любом случае нужны полные конфиги для http и https, описать случай в котором всё работает иначе это гадание на кофейной гуще.
Update:
в конфиге с ssl указано: proxy_pass https , а нужно http
сама библиотека работает по http, а nginx делает необходимое шифрование.
from websocket.
вот наш рабочий конфиг
location ws {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600s;
proxy_pass http://127.0.0.1:8013;
proxy_http_version 1.1;
}
у нас 127.0.0.1
from websocket.
ок. скиньте конфиг и опишите случай, в котором у вас работает.
скиньте полный конфиг (с секцией sever и port), в неработающем случае
скиньте полный конфиг (с секцией sever и port), в работающем случае
кто выдаёт ошибку и какую в случае не работающего
from websocket.
Решил через саму библиотеку, через nginx не получалось
from websocket.
поделитесь
from websocket.
при инициализации я добавил опции:
'secure' => true,
'cert_file' => '/path/to/ssl.crt', //path to ssl ceritificate
'pk_file' => '/path/to/ssl.key', //path to private key file
'websocket' => 'ssl://0.0.0.0:8004',
Далее в файле Servver.php изменил код на:
if (!empty($this->config['websocket'])) {
//open server socket
if ($this->config['secure']) {
$context = stream_context_create();
if (!is_file($this->config['cert_file'])) {
die("Error open cert-file\n");
}
if (!is_file($this->config['pk_file'])) {
die("Error open key-file\n");
}
stream_context_set_option($context, 'ssl', 'local_cert', $this->config['cert_file']);
stream_context_set_option($context, 'ssl', 'local_pk', $this->config['pk_file']);
$server = stream_socket_server($this->config['websocket'], $errorNumber, $errorString, STREAM_SERVER_BIND | STREAM_SERVER_LISTEN, $context);
} else {
$server = stream_socket_server($this->config['websocket'], $errorNumber, $errorString);
stream_set_blocking($server, 0);
}
if (!$server) {
die("error: stream_socket_server: $errorString ($errorNumber)\r\n");
}
}
Долгое время не мог понять почему данные при использовании ssl приходят в виде похожем на бинарный, оказалось что дело было из-за этой строки: stream_set_blocking($server, 0); я ее убрал и все работает отлично.
from websocket.
Здравствуйте.
Конфиг веб-сокет сервера:
$config = array(
'class' => 'Backend\Chat\Handler',
'pid' => '/tmp/websocket_chat.pid',
'websocket' => 'tcp://80.xx.xx.82:8004',
'localsocket' => 'tcp://127.0.0.1:8010',
'eventDriver' => 'event'
);
Конфиг Nginx:
location /websocket {
#limit_conn perip 5; #set limit to 5 connection from 1 ip
proxy_pass http://127.0.0.1:8010;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600s; #increase timeout to 1 hour
}
Сейчас в консоле браузера:
WebSocket connection to 'ws://site.ru/websocket?userId=3r3f3b0l09geeevio4c6np55g1_255' failed: Error during WebSocket handshake: Unexpected response code: 404
Что, кстати, указывать в proxy_pass - адрес:порт с websocket или localsocket ?
from websocket.
От себя хочу добавить, что если у кого то не заводится, то попробуйте это реализовать на другом домене/поддомене.
У нас, к примеру, на основном куча всего накручено, и не заработало.
На чистеньком поддомене, все гуд.
from websocket.
Related Issues (20)
- Как подружить с pg_notify HOT 4
- GenericEvent считывает не весь буфер HOT 2
- список онлайн юзеров HOT 8
- Отправка изображения через вебсокет
- Работа в Safari HOT 1
- stream_select(): supplied argument is not a valid stream resource HOT 7
- Не закрывает соединение при окончании на сайте HOT 4
- Как сделать многопоточность? HOT 6
- request response order HOT 1
- Можно ли создавать комнаты? HOT 12
- PHP Client HOT 3
- Один конект по сокету на несколько вкладок HOT 2
- Потраченное время на разработку. HOT 4
- Не сбрасываются коннекты HOT 12
- "Залипает" при слишком длинном handshake-сообщение (режим event) HOT 4
- websocket lunch on remote host HOT 1
- Ошибка при остановке HOT 2
- Каково потребление памяти и cpu при нагрузке в 100 000 соединений? HOT 4
- Почему бросили? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from websocket.