Π‘ΠΈΡΡΠ΅ΠΌΠ° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ node.js Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΎΠΊΡΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.
ΠΠ°Π΄Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΠ΄Π½Π°: ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ Π½Π° PHP-ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° (Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ 1 ΡΠ΅Π°Π³ΠΈΡΡΠ΅Ρ Π½Π° ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ 2 Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡΡ).
ΠΡΡ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΎΡΡΠ°ΡΡΡΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ PHP.
Node.js ΡΠ°ΡΡΡ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π»ΠΎΠ³ΠΈΠΊΡ, Π½Π΅ Ρ
ΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΠ΅. ΠΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΎΠ΄ΠΈΠ½ Node.js ΡΠ΅ΡΠ²Π΅Ρ Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Π½Π΅ ΠΎΠΏΠ°ΡΠ°ΡΡΡ ΡΡΠ΅ΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ
ΠΈΠ»ΠΈ Π²Π·Π»ΠΎΠΌΠ°. Π‘Π΅ΡΠ²Π΅Ρ http://cloud.doit-cms.ru
Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
. ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠ΅ΡΠ²ΠΈΡΠ° Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΈ ΠΎΡΠΊΡΡΡ, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌ node.js ΡΠ΅ΡΠ²Π΅ΡΠ΅ https://github.com/ramainen/doit-socket.
ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ ΡΠ΅ΡΠ²Π΅Ρ, ΠΎΠ±Π»Π°ΠΊΠΎ Azure ΡΠ΅ΠΏΠ»ΡΠ΅Ρ "ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ" ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠ΅ΡΠ²Π΅ΡΠ° Π½Π° github.
ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ:
<head>
):{{socketIO#init 'http://cloud.doit-cms.ru'}}
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, ΠΈΠ½ΠΈΡΠΈΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ:
{{socketIO#init 'http://cloud.doit-cms.ru', md5(session_id())}}
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
{{socketIO#init}}
ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅! ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΡ ΡΡΠ° Π·Π°ΡΠ΅Ρ ΠΈΠΌΠ΅Π»Π° ΡΠΌΡΡΠ», Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠΈΡ
ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Ρ ΠΈΡ
ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ md5(session_id())
).
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠ΄ Π½Π°ΠΏΡΡΠΌΡΡ:
<!-- ΠΠ΄Π΅ΡΡ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ socket.io. ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ°ΡΡ Π² Π»ΡΠ±ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅. -->
<script src="/cms/external/socket.io.js"></script>
<script>
var socket = io("http://cloud.doit-cms.ru");
socket.emit("register", {
userid: "<?php print md5(session_id()); ?>"
});
</script>
<script>
socket.on('server_event', function (data) {
console.log('server event');
console.log(data);
})
socket.on('alert', function (data) {
alert(data);
})
</script>
d()->SocketIO->url='http://cloud.doit-cms.ru';
d()->SocketIO->emit('75b0390c23ecef9109e66d0b352a1a66','server_event');
d()->SocketIO->url='http://cloud.doit-cms.ru';
d()->SocketIO->emit('75b0390c23ecef9109e66d0b352a1a66','alert');
//a98166839163afd20a4be56fa3e60d13 - ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (md5(session_id())), ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΏΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ
d()->SocketIO->emit('a98166839163afd20a4be56fa3e60d13','server_event', array('ΠΠ°ΡΡ','ΠΏΡΠΏΠΊΠΈΠ½'));
d()->SocketIO->emit('a98166839163afd20a4be56fa3e60d13','server_event', array('user'=>array(1,2,3)));
d()->SocketIO->emit('a98166839163afd20a4be56fa3e60d13','alert', '123');
ΠΠ»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠΎΡΡΠ΅Ρ:
route('/emit',function(){
d()->SocketIO->url='http://cloud.doit-cms.ru';
d()->SocketIO->emit('75b0390c23ecef9109e66d0b352a1a66','server_event','ΠΡΠΈΠ²Π΅Ρ');
});
ΠΠ° ΡΡΠΎΠΌ Π²ΡΡ.
Π’Π°ΠΊΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π½ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ GET ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ Π½Π° node.js ΡΠ΅ΡΠ²Π΅Ρ ΡΠ΅ΡΠ΅Π· file_get_contents
.