Posted to tcl by mbedev at Fri Mar 01 12:54:47 GMT 2019view raw
- package require websocket
- ::websocket::loglevel debug
- proc simple_handler {sock type msg} {
- # Uncomment the following line to view what's being sent from the client.
- puts "Echo sock=$sock type=$type msg=$msg"
- # All we want to do is echo back what was sent (thought I would append
- # my own message ;-))
- switch $type {
- request {return }
- close { return }
- disconnect { return }
- binary { return }
- text {
- ::websocket::send $sock text "$msg on the TclHttpd Web Server"
- }
- }
- }
- proc init_handler { chan clientaddr clientport } {
- fconfigure $chan -blocking false
- #puts [::websocket::conninfo $chan state]
- if { [::websocket::test $::sock $chan /] } {
- ::websocket::upgrade $chan
- } else {
- puts stderr "Not a websocket"
- return
- }
- }
- set sock [socket -server init_handler 8080]
- fconfigure $sock -translation binary
- #if 0 {
- ::websocket::server $sock
- #puts stderr [::websocket::conninfo $sock state]
- ::websocket::live $sock / simple_handler
- #puts stderr [::websocket::conninfo $sock state]
- #}
- vwait forever