http://mbed.org/users/okini3939/notebook/node_websocket/
Dependencies: EthernetNetIf mbed MbedJSONValue
main.cpp@0:236a084b1d6b, 2011-11-02 (annotated)
- Committer:
- okini3939
- Date:
- Wed Nov 02 02:56:07 2011 +0000
- Revision:
- 0:236a084b1d6b
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okini3939 | 0:236a084b1d6b | 1 | #include "mbed.h" |
okini3939 | 0:236a084b1d6b | 2 | #include "Websocket.h" |
okini3939 | 0:236a084b1d6b | 3 | #include "MbedJSONValue.h" |
okini3939 | 0:236a084b1d6b | 4 | #include "EthernetNetIf.h" |
okini3939 | 0:236a084b1d6b | 5 | |
okini3939 | 0:236a084b1d6b | 6 | #define BASE_URL "ws://host.domain.name:8080/" |
okini3939 | 0:236a084b1d6b | 7 | |
okini3939 | 0:236a084b1d6b | 8 | DigitalOut myled(LED1); |
okini3939 | 0:236a084b1d6b | 9 | Serial pc(USBTX, USBRX); |
okini3939 | 0:236a084b1d6b | 10 | |
okini3939 | 0:236a084b1d6b | 11 | EthernetNetIf *eth; |
okini3939 | 0:236a084b1d6b | 12 | Websocket *ws; |
okini3939 | 0:236a084b1d6b | 13 | |
okini3939 | 0:236a084b1d6b | 14 | int main() { |
okini3939 | 0:236a084b1d6b | 15 | int i = 0; |
okini3939 | 0:236a084b1d6b | 16 | char buf[100]; |
okini3939 | 0:236a084b1d6b | 17 | MbedJSONValue json; |
okini3939 | 0:236a084b1d6b | 18 | Timer timer; |
okini3939 | 0:236a084b1d6b | 19 | |
okini3939 | 0:236a084b1d6b | 20 | eth = new EthernetNetIf(); |
okini3939 | 0:236a084b1d6b | 21 | EthernetErr ethErr = eth->setup(); |
okini3939 | 0:236a084b1d6b | 22 | if (ethErr) { |
okini3939 | 0:236a084b1d6b | 23 | pc.printf("\r\nERROR %d in setup.\r\n", ethErr); |
okini3939 | 0:236a084b1d6b | 24 | } |
okini3939 | 0:236a084b1d6b | 25 | |
okini3939 | 0:236a084b1d6b | 26 | ws = new Websocket(BASE_URL "test", eth); |
okini3939 | 0:236a084b1d6b | 27 | |
okini3939 | 0:236a084b1d6b | 28 | pc.printf("begin\r\n"); |
okini3939 | 0:236a084b1d6b | 29 | |
okini3939 | 0:236a084b1d6b | 30 | json["hello"] = "mbed"; |
okini3939 | 0:236a084b1d6b | 31 | json["num"] = i; |
okini3939 | 0:236a084b1d6b | 32 | |
okini3939 | 0:236a084b1d6b | 33 | while(! ws->connect()) { |
okini3939 | 0:236a084b1d6b | 34 | pc.printf("cannot connect websocket, retrying...\r\n"); |
okini3939 | 0:236a084b1d6b | 35 | wait(2); |
okini3939 | 0:236a084b1d6b | 36 | } |
okini3939 | 0:236a084b1d6b | 37 | |
okini3939 | 0:236a084b1d6b | 38 | timer.start(); |
okini3939 | 0:236a084b1d6b | 39 | while(1) { |
okini3939 | 0:236a084b1d6b | 40 | Net::poll(); |
okini3939 | 0:236a084b1d6b | 41 | |
okini3939 | 0:236a084b1d6b | 42 | if (timer.read_ms() >= 2000) { |
okini3939 | 0:236a084b1d6b | 43 | json["num"] = i ++; |
okini3939 | 0:236a084b1d6b | 44 | ws->send((char*)json.serialize().c_str()); |
okini3939 | 0:236a084b1d6b | 45 | timer.reset(); |
okini3939 | 0:236a084b1d6b | 46 | myled = myled ? 0 : 1; |
okini3939 | 0:236a084b1d6b | 47 | } |
okini3939 | 0:236a084b1d6b | 48 | |
okini3939 | 0:236a084b1d6b | 49 | if (ws->read(buf)) { |
okini3939 | 0:236a084b1d6b | 50 | pc.printf("recv: %s\r\n", buf); |
okini3939 | 0:236a084b1d6b | 51 | } |
okini3939 | 0:236a084b1d6b | 52 | |
okini3939 | 0:236a084b1d6b | 53 | Net::poll(); |
okini3939 | 0:236a084b1d6b | 54 | |
okini3939 | 0:236a084b1d6b | 55 | if (! ws->connected()) { |
okini3939 | 0:236a084b1d6b | 56 | pc.printf("disconnected\r\n"); |
okini3939 | 0:236a084b1d6b | 57 | break; |
okini3939 | 0:236a084b1d6b | 58 | } |
okini3939 | 0:236a084b1d6b | 59 | } |
okini3939 | 0:236a084b1d6b | 60 | } |