→ dododavid006: 用同一個憑證就好了 但不是把 https 改成 wss 是你12/02 11:50
→ dododavid006: 要連線 websocket 的地方把網址的 ws 改成 wss 12/02 11:51
請問我要怎麼用wss連線Websocket?
一般的socket_create和socket_bind等函數應該沒辦法連wss吧…
我上網找了一下有個stream_context_set_option需要設定
但是他好像需要.pem檔和.key檔,這個.pem檔和.key檔是什麼?還有我要去哪裡產生.pem
檔和.key檔呢?
看來要連線wss是一件蠻困難的事…
※ 編輯: red0whale (114.44.7.20), 12/02/2017 12:45:05
→ dododavid006: pem 跟 key 檔就是你 server 的 ssl 憑證 你現在的12/02 13:00
→ dododavid006: 問題是 client 端還是 server 端 如果 server 端已12/02 13:00
→ dododavid006: 經架好的話 其實改一下 client 端用的網址就行了12/02 13:01
您好
我不太清楚您所謂server端還是client端是指什麼
不過我只知道我用Chrome是可以瀏覽https的,也就是應該有裝好憑證
====
https://github.com/vakata/websocket
以上是我在Github上看到的可以用wss連線到Websocket的程式
只是我不曉得該怎麼去使用它
因為它還需要PEM encoded public 、 private keys和PEM certificate的密碼才能連線w
ss
然而我是承租外面的虛擬主機,並且請主機商幫忙安裝憑證的
所以我不知道那些什麼憑證的到底需要填什麼
請讓我知道這個「$cert」和「$pass」的參數必須填什麼才可以連線wss
謝謝
另外,附上我的程式和錯誤訊息給您:
《index.php》
<?php
require "src/Base.php";
require "src/Client.php";
require "src/Server.php";
require "src/WebSocketException.php";
// this handler will forward each message to all clients (except the sender)
$server = new \vakata\websocket\Server('wss://我已安裝憑證的網域:8080','./serv
er.pem');
$server->onMessage(function ($sender, $message, $server) {
foreach ($server->getClients() as $client) {
if ((int)$sender['socket'] !== (int)$client['socket']) {
$server->send($client['socket'], $message);
}
}
});
$server->run();
?>
《錯誤訊息》
[02-Dec-2017 14:11:06 Asia/Taipei] PHP Fatal error: Uncaught exception 'vakata
\websocket\WebSocketException' with message 'Could not create server' in /publ
ic_html/websocket-master/src/Server.php:51
Stack trace:
#0 /public_html/websocket-master/index.php(7): vakata\websocket\Server->__cons
truct('wss://...', './server.pem')
#1 {main}
thrown in /public_html/websocket-master/src/Server.php on line 51
《server.pem》(中間恕刪)
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
※ 編輯: red0whale (114.44.7.20), 12/02/2017 14:19:10
推 newversion: 施主你把private key貼出來了!12/02 15:05
推 newton2009: XDD RSA private key ...12/02 15:17
推 Neisseria: 直接換 key 吧,保重 =_=...12/02 15:58
→ newversion: 有看過 chmod 777 prikey 然後PHP有:12/02 16:24
→ newversion: <?php readfile $_GET("f") XDD12/02 16:25
好吧…
我不懂那是什麼
我以為那只是一堆文字而已
話說中間都刪掉了也是有人能全部破解嗎?
※ 編輯: red0whale (114.44.7.20), 12/02/2017 19:02:20
請問有人能告訴我怎麼讓wss://開頭的Websocket可以連線?
我只是想做一個比較不會消耗伺服器資源的聊天室而已
但是由於我的網站是用https,而瀏覽器規定https的網站一定要使用wss://開頭的Websoc
ket
所以我不得不用wss
如果https可以使用ws://開頭的Websocket,我也不必這麼大費周章找遍所有網頁了(因為
連線ws://開頭的Websocket我知道怎麼做)
現在只差如何成功連線wss://開頭的Websocket
請各位一定要協助我
也希望各位提供推薦的可使用wss連線的Websocket聊天室程式
謝謝
※ 編輯: red0whale (114.44.7.20), 12/02/2017 22:25:37
→ dododavid006: 那個中間要解開應該不太可能啦 然後你那兩段是在同12/02 22:46
→ dododavid006: 一個檔案嗎 一般 ssl 設定時應該會拆成兩個檔案才對12/02 22:47
→ dododavid006: 應該是把第一段的 BEGIN 到 END 存成 .pem 然後第二12/02 22:47
→ dododavid006: 段存成 .key 再拿去給你的程式試試看 如果錯了再交12/02 22:48
→ dododavid006: 換過來吧 因為老實說 我常常分不清楚這兩個檔案XD12/02 22:49
→ dododavid006: 剛剛翻了一下文件 應該不用拆兩個檔案才對 sorry12/02 22:51
謝謝,不過我試了.pem之後還是無法成功
我是用下面這個來作為我的測試版聊天室:
https://github.com/Flynsarmy/PHPWebSocket-Chat
用8000和8080埠的ws://協定在http://瀏覽的情況下都能連線成功且可以聊天(前提是要
先執行server.php,而且server.php的「wsStartServer」的IP和Port都要改成自己的網
站)
但問題是我必須讓我的網站以https方式呈現
而瀏覽器要求https的網站只能以wss://開頭的Websocket連線
問題就是要怎麼讓「wss://...」也能連線成功
也就是要怎麼用PHP create「wss://...」的Websocket...
我試過千百遍都沒用,瀏覽器一直顯示:
Websocket connection to 'wss://...:8080/' failed: Error in connection establis
hment: net::ERR_CONNECTION_TIMED_OUT
好頭疼…
我好想開始放棄Websocket改用以往傳統的Comet長輪詢了…
→ dododavid006: 你 8080 port 有在使用嗎?12/02 22:55
沒有
※ 編輯: red0whale (114.44.7.20), 12/02/2017 23:08:02
→ dododavid006: 因為它訊息是 server 開不起來 我猜有沒有可能是12/02 22:56
→ dododavid006: port 占用住了 你有開其它的網頁伺服器嗎12/02 22:56
問題是即使某個Port沒被佔用它那個wss Websocket還是沒有創建成功呀
我的問題點是怎麼用PHP創立「wss://...」開頭的Websocket...
※ 編輯: red0whale (114.44.7.20), 12/02/2017 23:11:06
→ dododavid006: 對了 你試試看建 websocket server 時中間的網址改12/02 23:12
→ dododavid006: 成用 0.0.0.012/02 23:12
沒用,error_log跟我說connection refused
※ 編輯: red0whale (114.44.7.20), 12/02/2017 23:17:03
→ jfcherng: 以前我的作法是PHP開內網ws, NGINX/Apache 做SSL與proxy 12/02 23:48