开发相关变量 - longcnn/websocketd_CN GitHub Wiki
最新版参看https://github.com/joewalnes/websocketd/wiki/Environment-variables
WebSocket server programs often need additional data about the connection, beyond just the raw stream of messages - such as remote host, which web-page they're on, URL query parameters, cookies, etc.
To expose these to programs, they are set as environment variables for each request.
The variables conform to the Common Gateway Interface (CGI) 1.1 Specification.
You can read these environment variables directly, or use a programming language specific CGI library that can make them easier to work with (e.g. Perl, Python, Ruby).
AUTH_TYPE
Empty. Not supported in WebSockets.
CONTENT_LENGTH
Empty. Not supported in WebSockets.
CONTENT_TYPE
Empty. Not supported in WebSockets.
GATEWAY_INTERFACE
The string websocketd-CGI/0.1
.
Future enhancements may change the version.
Example:
GATEWAY_INTERFACE=websocketd-CGI/0.1
HTTP_COOKIE
HTTP Cookies, if present.
Example:
HTTP_COOKIE=session=1234; prefs=foo`
HTTP_ORIGIN
The base URL of the origin site that initiated the WebSocket.
Example:
HTTP_ORIGIN=https://github.com/
PATH_TRANSLATED
TODO
PATH_INFO
TODO
QUERY_STRING
Everything after the ?
in the URL.
Example: If the requested WebSocket URL is ws://localhost:1234/somedir/myscript.py?name=me&msg=hello%20world
, then:
QUERY_STRING=name=me&msg=hello%20world
REMOTE_ADDR
IP address of remote WebSocket client.
Example:
REMOTE_ADDR=123.123.123.123
REMOTE_HOST
Reverse DNS lookup of remote WebSocket client.
Example:
REMOTE_HOST=somemachine.someisp.com
If the reverse DNS lookup fails, or if --reverselookup=false
is specified on the websocketd
command line, this value will fallback to the same value of REMOTE_ADDR
.
REMOTE_IDENT
Empty. Not supported in WebSockets.
REMOTE_PORT
Source port of remote WebSocket client.
Example:
REMOTE_PORT=52696
(Non standard)
REMOTE_USER
Empty. Not supported in WebSockets.
REQUEST_METHOD
The HTTP request method. For WebSockets, this is always GET
.
Example:
REQUEST_METHOD=GET
REQUEST_URI
The original request URI, as sent by the WebSocket client. This does not include scheme, host or port.
Example: If the requested WebSocket URL is ws://localhost:1234/somedir/myscript.py?name=me&msg=hello%20world
, then:
REQUEST_URI=/somedir/myscript.py?name=me&msg=hello%20world
(Non standard)
SCRIPT_NAME
TODO
SERVER_NAME
The hostname of the server, as specified in the URL.
Example:
SERVER_NAME=www.example.com
SERVER_PORT
The listening port of the server.
Example:
SERVER_PORT=8080
SERVER_PROTOCOL
The HTTP protocol, as specified by the client.
Example:
SERVER_PROTOCOL=HTTP/1.1
SERVER_SOFTWARE
The string websocketd/x.x.x.x
, where x.x.x.x
is the version of the websocketd
program.
Example:
SERVER_SOFTWARE=websocketd/1.0.0.0
UNIQUE_ID
A unique string associated with each WebSocket connection. It can be used for logging and debugging purposes.
The ID should be treated as an opaque payload. It must be treated as a string, not a number. The implementation may change over time.
The ID is only guaranteed to unique within a single websocketd
process.
Example:
UNIQUE_ID=45462465645449101442
(Non standard)
HTTP Headers
Per the CGI specification, all HTTP headers will be set as environment variables. The header name will be transformed:
- String converted to upper-case
- Dashes
-
converted to underscores_
- Prefixed with
HTTP_
Example: If the HTTP header Sec-WebSocket-Version: 13
is present, then:
HTTP_SEC_WEBSOCKET_VERSION=13