Expose Websocket request host/path to server-side

This commit is contained in:
Tony Garnock-Jones 2016-05-12 12:15:11 -04:00
parent 7e48e82a48
commit 81e10632dd
4 changed files with 16 additions and 14 deletions

View File

@ -2,7 +2,11 @@
(require racket/match)
(require net/rfc6455)
(require (only-in net/rfc6455/conn-api ws-conn-base-ip))
(require (only-in net/rfc6455/conn-api
ws-conn-base-ip
ws-conn-peer-addresses
ws-conn-host
ws-conn-path))
(require "../main.rkt")
(require "../demand-matcher.rkt")
@ -25,7 +29,7 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Protocol messages
(struct websocket-remote-client (id) #:prefab)
(struct websocket-remote-client (id host path) #:prefab)
(struct websocket-local-server (port ssl-options) #:prefab)
(struct websocket-local-client (id) #:prefab)
(struct websocket-remote-server (url) #:prefab)
@ -71,19 +75,17 @@
(transition state (spawn-connection local-addr remote-addr id c control-ch))]
[_ #f]))
(define (ws-conn-peer-addresses c)
(local-require racket/tcp)
(local-require openssl)
(define ip (ws-conn-base-ip c))
(if (ssl-port? ip)
(ssl-addresses ip #t)
(tcp-addresses ip #t)))
(define ((connection-handler server-addr) c dummy-state)
(define control-ch (make-channel))
(define id (gensym 'ws))
(send-ground-message
(websocket-connection id server-addr (websocket-remote-client id) c control-ch))
(websocket-connection id
server-addr
(websocket-remote-client id
(ws-conn-host c)
(ws-conn-path c))
c
control-ch))
(connection-thread-loop control-ch c id))
(define (connection-thread-loop control-ch c id)

View File

@ -6,7 +6,7 @@
(spawn-websocket-driver)
(define any-client (websocket-remote-client ?))
(define any-client (websocket-remote-client ? ? ?))
(define tcp-server-id (websocket-local-server 8081 #f))
(define ssl-server-id (websocket-local-server 8084 (websocket-ssl-options "server-cert.pem"
"private-key.pem")))

View File

@ -5,7 +5,7 @@
(spawn-websocket-driver)
(define any-client (websocket-remote-client ?))
(define any-client (websocket-remote-client ? ? ?))
(define server-id (websocket-local-server 8081 (websocket-ssl-options "server-cert.pem"
"private-key.pem")))

View File

@ -5,7 +5,7 @@
(spawn-websocket-driver)
(define any-client (websocket-remote-client ?))
(define any-client (websocket-remote-client ? ? ?))
(define server-id (websocket-local-server 8081 #f))
(define (spawn-connection-handler c)