Difference between revisions of "ActiveSockets"
(Automated page entry using MWPush.pl) |
(Automated page entry using MWPush.pl) |
||
Line 10: | Line 10: | ||
== Implementation Details == | == Implementation Details == | ||
− | * aiengine creates all active sockets on startup | + | * aiengine creates all active sockets on startup |
− | * active socket is available via AIMedia interface | + | * active socket is available via AIMedia interface |
− | * active socket is available via IO channels if configured | + | * active socket is available via IO channels if configured |
− | * inbound stream can be forwarded to configured IO channel | + | * inbound stream can be forwarded to configured IO channel |
− | * stream from specific IO channel can be forwarded to outbound | + | * stream from specific IO channel can be forwarded to outbound |
− | * active socket supports protocol configuring - see [[MediaProtocols Protocols]] | + | * active socket supports protocol configuring - see [[MediaProtocols Protocols]] |
− | * if forwarding inbound stream - creates thread to read from socket and automatically reconnects if connection was broken | + | * if forwarding inbound stream - creates thread to read from socket and automatically reconnects if connection was broken |
Planned but implemented: | Planned but implemented: | ||
− | * to have non-persisting connections - to use active connection only after request from server, do not restore connection automatically | + | * to have non-persisting connections - to use active connection only after request from server, do not restore connection automatically |
− | * timeout for reconnection | + | * timeout for reconnection |
== Configuration == | == Configuration == | ||
− | * sample configuration for google active socket in media.xml | + | * sample configuration for google active socket in media.xml |
{{{ | {{{ | ||
− | <channel name="google" run="true"> | + | <channel name="google" run="true"> |
− | <property name="protocol" value="http"/> | + | <property name="protocol" value="http"/> |
− | <property name="protocol.showmessages" value="false"/> | + | <property name="protocol.showmessages" value="false"/> |
− | <property name="protocol.showpackets" value="false"/> | + | <property name="protocol.showpackets" value="false"/> |
− | <property name="msgtype" value="text"/> | + | <property name="msgtype" value="text"/> |
− | <property name="permanent" value="true"/> | + | <property name="permanent" value="true"/> |
− | <property name="host" value="www.google.com"/> | + | <property name="host" value="www.google.com"/> |
− | <property name="port" value="80"/> | + | <property name="port" value="80"/> |
− | <property name="redirect-in" value="true"/> | + | <property name="redirect-in" value="true"/> |
− | <property name="redirect-out" value="true"/> | + | <property name="redirect-out" value="true"/> |
− | <property name="topic-in" value="http.response"/> | + | <property name="topic-in" value="http.response"/> |
− | <property name="topic-out" value="http.request"/> | + | <property name="topic-out" value="http.request"/> |
− | </channel> | + | </channel> |
}}} | }}} | ||
− | * *host* - host to connect to - now IP-addresses are not supported | + | * *host* - host to connect to - now IP-addresses are not supported |
− | * *port* - port to connect to | + | * *port* - port to connect to |
− | * *redirect-in* - if "true" then messages are forwarded from socket to IO channel | + | * *redirect-in* - if "true" then messages are forwarded from socket to IO channel |
− | * *redirect-out* - if "true" then messages are forwarded from IO channel to socket | + | * *redirect-out* - if "true" then messages are forwarded from IO channel to socket |
− | * *topic-in* - channel to write messages received from socket | + | * *topic-in* - channel to write messages received from socket |
− | * *topic-out* - messages from this channel are sent to socket - see [[MediaProtocols Protocols]] | + | * *topic-out* - messages from this channel are sent to socket - see [[MediaProtocols Protocols]] |
− | * *reconnectionTimeout* - if unable to connect to socket, then next attempt is performed only after reconnectionTimeout seconds | + | * *reconnectionTimeout* - if unable to connect to socket, then next attempt is performed only after reconnectionTimeout seconds |
== How to Test == | == How to Test == | ||
− | * use google active socket and test to read some page: | + | * use google active socket and test to read some page: |
{{{ | {{{ | ||
INFO: AI console | INFO: AI console | ||
Line 57: | Line 57: | ||
REQUEST: | REQUEST: | ||
<xmlcall name="TestDirectChannels-Google" class="TestDirectChannels" method="testRequestPage" requestId="REQ-1"> | <xmlcall name="TestDirectChannels-Google" class="TestDirectChannels" method="testRequestPage" requestId="REQ-1"> | ||
− | <parameters> | + | <parameters> |
− | <property name="page" value="http://code.google.com" /> | + | <property name="page" value="http://code.google.com" /> |
− | </parameters> | + | </parameters> |
</xmlcall> | </xmlcall> | ||
Line 65: | Line 65: | ||
RESPONSE: | RESPONSE: | ||
<xmlcallresult requestId="REQ-1" name="TestDirectChannels-Google" status="OK"> | <xmlcallresult requestId="REQ-1" name="TestDirectChannels-Google" status="OK"> | ||
− | <page>http://code.google.com</page> | + | <page>http://code.google.com</page> |
− | <body><!DOCTYPE html... (omitted) | + | <body><!DOCTYPE html... (omitted) |
</xmlcallresult> | </xmlcallresult> | ||
INFO: disconnected | INFO: disconnected | ||
+ | }}} |
Revision as of 00:10, 16 June 2015
- summary Network Listeners
@@Home -> [Specs] -> [ActiveSockets]
Overview
This feature allows to have unlimited set of connections initiated from aiengine server to external servers.
Implementation Details
* aiengine creates all active sockets on startup * active socket is available via AIMedia interface * active socket is available via IO channels if configured * inbound stream can be forwarded to configured IO channel * stream from specific IO channel can be forwarded to outbound * active socket supports protocol configuring - see MediaProtocols Protocols * if forwarding inbound stream - creates thread to read from socket and automatically reconnects if connection was broken
Planned but implemented:
* to have non-persisting connections - to use active connection only after request from server, do not restore connection automatically * timeout for reconnection
Configuration
* sample configuration for google active socket in media.xml
{{{ <channel name="google" run="true"> <property name="protocol" value="http"/> <property name="protocol.showmessages" value="false"/> <property name="protocol.showpackets" value="false"/> <property name="msgtype" value="text"/> <property name="permanent" value="true"/> <property name="host" value="www.google.com"/> <property name="port" value="80"/> <property name="redirect-in" value="true"/> <property name="redirect-out" value="true"/> <property name="topic-in" value="http.response"/> <property name="topic-out" value="http.request"/> </channel> }}}
* *host* - host to connect to - now IP-addresses are not supported * *port* - port to connect to * *redirect-in* - if "true" then messages are forwarded from socket to IO channel * *redirect-out* - if "true" then messages are forwarded from IO channel to socket * *topic-in* - channel to write messages received from socket * *topic-out* - messages from this channel are sent to socket - see MediaProtocols Protocols * *reconnectionTimeout* - if unable to connect to socket, then next attempt is performed only after reconnectionTimeout seconds
How to Test
* use google active socket and test to read some page:
{{{ INFO: AI console INFO: connected to 87.228.126.111:20001 REQUEST: <xmlcall name="TestDirectChannels-Google" class="TestDirectChannels" method="testRequestPage" requestId="REQ-1">
<parameters> <property name="page" value="http://code.google.com" /> </parameters>
</xmlcall>
output: RESPONSE: <xmlcallresult requestId="REQ-1" name="TestDirectChannels-Google" status="OK">
<page>http://code.google.com</page> <body><!DOCTYPE html... (omitted)
</xmlcallresult>
INFO: disconnected }}}