Changes for page Server/ Website Communication
Last modified by stu115775 on 2025/01/30 12:17
Summary
-
Page properties (2 modified, 0 added, 0 removed)
-
Objects (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki.stu115 3341 +XWiki.stu115775 - Content
-
... ... @@ -1,1 +1,170 @@ 1 +The Communication is handled by a WebProvider, wich is a central server in a star pattern. This server waits for clients and applies theire changes and distributes these changes to all interested clients. 2 + 3 +The provided WebProvider listens on port 8089 and is accesed by the Controller which does a protocoll-upgrade to enable full block data-writeing and PHP-instances which provide data for a webside or ServerSendEvents(SSE) 4 + 5 +The communication protocoll is a use-case limmited binary protocol which sends a one byte command followed by a one byte datatype byte followed by a specific number of data bytes specified by the command and datatype. 6 + 7 +=== Commands: === 8 + 9 +(% class="wrapped" %) 10 +|=((( 11 +Byte 12 +)))|=((( 13 +Name 14 +)))|=((( 15 +Usage 16 +)))|=(% colspan="1" %)(% colspan="1" %) 17 +((( 18 +Data Content 19 +))) 20 +|((( 21 +0x01 22 +)))|((( 23 +Set Data 24 +)))|((( 25 +sets a part of specified data or all if in blockmode 26 +)))|(% colspan="1" %)(% colspan="1" %) 27 +((( 28 +2 bytes, index and value (or all values and no index if only one index exists or blockmode is on) 29 +))) 30 +|((( 31 +0x02 32 +)))|((( 33 +Request Data 34 +)))|((( 35 +requests specified data 36 +)))|(% colspan="1" %)(% colspan="1" %) 37 +((( 38 +no data 39 +))) 40 +|((( 41 +0x03 42 +)))|((( 43 +Enable Stream 44 +)))|((( 45 +request to get updates of specified data 46 +)))|(% colspan="1" %)(% colspan="1" %) 47 +((( 48 +no data 49 +))) 50 +|((( 51 +0x04 52 +)))|((( 53 +Disable Stream 54 +)))|((( 55 +request to stop geting updates of specified data 56 +)))|(% colspan="1" %)(% colspan="1" %) 57 +((( 58 +no data 59 +))) 60 +|((( 61 +0x05 62 +)))|((( 63 +Response Data 64 +)))|((( 65 +response of a data request 66 +)))|(% colspan="1" %)(% colspan="1" %) 67 +((( 68 +full dataset of given datatype 69 +))) 70 +|((( 71 +0x06 72 +)))|((( 73 +Stream Data 74 +)))|((( 75 +an data update notification 76 +)))|(% colspan="1" %)(% colspan="1" %) 77 +((( 78 +full dataset of given datatype 79 +))) 80 +|(% colspan="1" %)(% colspan="1" %) 81 +((( 82 +0x07 83 +)))|(% colspan="1" %)(% colspan="1" %) 84 +((( 85 +Switch to 'Block' protocoll 86 +)))|(% colspan="1" %)(% colspan="1" %) 87 +((( 88 +switch to blockmode, datatype has to have the same value as validation 89 +)))|(% colspan="1" %)(% colspan="1" %) 90 +((( 91 +no data 92 +))) 93 + 94 +=== Datatypes: === 95 + 96 +(% class="wrapped" %) 97 +|=((( 98 +Byte 99 +)))|=((( 100 +Name 101 +)))|=((( 102 +number of bytes 103 +))) 104 +|((( 105 +0x01 106 +)))|((( 107 +Position 108 +)))|((( 109 +NUM_TRAINS = 11 110 +))) 111 +|((( 112 +0x02 113 +)))|((( 114 +Destination 115 +)))|((( 116 +NUM_TRAINS = 11 117 +))) 118 +|((( 119 +0x03 120 +)))|((( 121 +Cleanup 122 +)))|((( 123 +1 124 +))) 125 +|((( 126 +0x04 127 +)))|((( 128 +Randommode 129 +)))|((( 130 +1 131 +))) 132 +|((( 133 +0x05 134 +)))|((( 135 +Lamps 136 +)))|((( 137 +NUM_LAMPS = 24 138 +))) 139 +|((( 140 +0x06 141 +)))|((( 142 +Schedule(actually Station) 143 +)))|((( 144 +NUM_TRAINS = 11 145 +))) 146 +|((( 147 +0x07 148 +)))|((( 149 +Substation 150 +)))|((( 151 +NUM_TRAINS = 11 152 +))) 153 + 154 +=== Running the WebProvider: === 155 + 156 +go into code/interface 157 + 158 +run 'make web' 159 + 160 +run './web' 161 + 162 += Ideas for a new version: = 163 + 164 +(% style="list-style-type: square;" %) 165 +* Don't use fixed datatypes, instead add a command to create a datatype by name and bytesize, which returns a datatypenumber, uniqe for each name, disconnects if size doesn't match with existing. 166 +* Just use a different command to set the full dataset 167 +* don't send updates to a client if the only change was caused by this client (just skip the current client on setting the dirty flag) 168 +* Maybe add a minimum time between updates (prevents SSE and others from being flodded and the website actually crashing by a JavaScript DOS) 169 + 1 1 \\
- Confluence.Code.ConfluencePageClass[0]
-
- Id
-
... ... @@ -1,1 +1,1 @@ 1 -3214565 31 +32145656 - URL
-
... ... @@ -1,1 +1,1 @@ 1 -https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/RP2/pages/3214565 3/Server/ Website Communication1 +https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/RP2/pages/32145656/Server/ Website Communication