x.websocket: add header to client (#9517)
							parent
							
								
									3ced970b17
								
							
						
					
					
						commit
						9b9ef5fe1b
					
				| 
						 | 
				
			
			@ -22,7 +22,12 @@ fn (mut ws Client) handshake() ? {
 | 
			
		|||
	sb.write_string('\r\nUpgrade: websocket\r\nConnection: Upgrade\r\n')
 | 
			
		||||
	sb.write_string('Sec-WebSocket-Key: ')
 | 
			
		||||
	sb.write_string(seckey)
 | 
			
		||||
	sb.write_string('\r\nSec-WebSocket-Version: 13\r\n\r\n')
 | 
			
		||||
	sb.write_string('\r\nSec-WebSocket-Version: 13')
 | 
			
		||||
	for key in ws.header.keys() {
 | 
			
		||||
		val := ws.header.values_str(key).join(',')
 | 
			
		||||
		sb.write_string('\r\n$key:$val')
 | 
			
		||||
	}
 | 
			
		||||
	sb.write_string('\r\n\r\n')
 | 
			
		||||
	handshake := sb.str()
 | 
			
		||||
	defer {
 | 
			
		||||
		unsafe { handshake.free() }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,7 @@
 | 
			
		|||
module websocket
 | 
			
		||||
 | 
			
		||||
import net
 | 
			
		||||
import net.http
 | 
			
		||||
import x.openssl
 | 
			
		||||
import net.urllib
 | 
			
		||||
import time
 | 
			
		||||
| 
						 | 
				
			
			@ -30,6 +31,7 @@ pub:
 | 
			
		|||
	uri    Uri    // uri of current connection
 | 
			
		||||
	id     string // unique id of client
 | 
			
		||||
pub mut:
 | 
			
		||||
	header            http.Header  // headers that will be passed when connecting
 | 
			
		||||
	conn              &net.TcpConn // underlying TCP socket connection
 | 
			
		||||
	nonce_size        int = 16 // size of nounce used for masking
 | 
			
		||||
	panic_on_callback bool     // set to true of callbacks can panic
 | 
			
		||||
| 
						 | 
				
			
			@ -85,6 +87,7 @@ pub fn new_client(address string) ?&Client {
 | 
			
		|||
		uri: uri
 | 
			
		||||
		state: .closed
 | 
			
		||||
		id: rand.uuid_v4()
 | 
			
		||||
		header: http.new_header()
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -486,5 +489,6 @@ pub fn (c &Client) free() {
 | 
			
		|||
		c.error_callbacks.free()
 | 
			
		||||
		c.open_callbacks.free()
 | 
			
		||||
		c.close_callbacks.free()
 | 
			
		||||
		c.header.free()
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue