AsyncHttpServerObject._beforeHttpServerStop = function(){
/*服务端关闭以前触发
此回调函数是标准库保留接口
用户不应使用此回调*/
}
AsyncHttpServerObject._onClientClosed = function(hSocket){
/*客户端连接已经关闭时触发
此函数在连接断开后一定会被触发
此回调函数是标准库保留接口
用户不应使用此回调*/
}
当前连接数,不可改动该值
AsyncHttpServerObject.beforeStop = function(){
/*服务端关闭以前触发*/
}
绑定 IP 与端口。
应当由 start 函数自动调用此函数。
关闭所有超出keepAliveTimeout限制的超时连接
在连接超出最大连接数时,此函数会被自动调用
用于获取客户端套接字对应的客户端对象
客户端套接字读写缓冲区大小,默认为1MB
缓冲区如果设置的太小,会导致过于频繁的调用读写函数
设置 response.loadcode 函数处理 *.aardio 代码文件的模式。
值为 null 或者 "execute" 表示允许执行代码,默认为 null。
设为 "static" 则 aardio 文件可作为普通文件下载。
设为 "deny" 则禁止访问 aardio 文件。
AsyncHttpServerObject.customErrors = {
[404] = function(response){
response.status = "404 Not Found";
response.write("404 Not Found"); /*自定义错误页,
也可以直接指定错误页路径*/
}
}
默认文档,默认为"main.aardio",设为 null 禁用默认文档。
如果访问硬盘上存在的目录,request.path 尾部不加斜杠会自动跳转到以斜杠结束的路径
如果访问嵌入资源目录,只有 request.path 以斜杠才会访问默认文档,
对于访问嵌入资源文件,建议指定完整的文件路径,
默认文档主要是用于硬盘上的网站
访问此服务器的默认网址
网站根目录,
不会修改应用程序根目录,支持硬盘目录与资源目录,
这个属性应当设置为应用程序根目录下的相对路径,
例如 "/res/web/"
注意: request.path 前面包含 documentBase 目录。
而 request.pathInfo 忽略 documentBase 目录
网站应用程序根目录,默认为"/",
只能设置为硬盘上实际存在的目录,
改变此目录,会同时改变
服务端代码中的应用程序根目录以及用户库目录,
如果只是相将所有请求路径转向某个目录,应当改用 documentBase 属性
如果网站在嵌入资源目录中,应当改用 documentBase 属性
返回当前绑定的本地 IP,端口号
返回当前绑定的本地端口号
返回客户端IP地址,端口
返回 HTTP 服务端访问网址
如果服务器启动失败不返回任何值
返回首页网址
返回 @path 指定路径的网址,路径开始可省略斜杠。
注意参数第一个字符不需要指定斜杠
可选用 @localIp 指定 IP "0.0.0.0" 是否替换为上网卡 IP(否则 localhost )
返回 @path 指定路径的网址,路径开始可省略斜杠。
@param 指定 URL 参数表(table 对象)。
可选用 @localIp 指定 IP "0.0.0.0" 是否替换为上网卡 IP(否则 localhost )
连接是否已关闭
是否已连接并准备就绪
最大保持连接时间,以秒为单位,
负数表示不限时间
监听构造函数绑定的 IP 端口,成功返回 true 。
已自动调用此函数。
最大连接数
AsyncHttpServerObject.run(
function(response,request,session){
response.loadcode(request.path);
}/*启动HTTP服务并在此回调函数中处理请求,
不传入参数则默认调用response.loadcode 。
也可以传入一个或多个表参数,键为页面相对路径,值为响应数据或回调函数,
键指定的路径为 aardio 后缀时,启用模板语法解析并返回 HTML 代码*/
);
服务端监听地址
断开 HTTP 服务端
返回 SPA 单页应用首页网址
如未启动服务端则自动启动且监听IP设为 "127.0.0.1"
参数指定 SPA 单页应用首页路径,
404错误页也会自动设置到该路径,
返回首页网址
可选用参数 @documentBase 指定根目录以避免网页不支持非根目录路径
启动单线程异步TCP服务端,成功返回true,失败返回null,
如果不写IP,则默认设为"0.0.0.0"也即监听本机所有IP,访问此服务端也不限制IP
限制仅本机可以访问建议写127.0.0.1
端口为0或省略则自动查找1025以后的空闲端口
注意0-1023为系统通用服务保留端口,
1024-49151为用户服务端口,其中大约%9已由IANA注册分配
49152-65535为私有或临时端口
关闭 HTTP 服务端
AsyncHttpServerObject.onClientClosed = function(hSocket){
/*客户端连接已经关闭时触发
此函数在连接断开后一定会被触发*/
}
AsyncHttpServerObject.onClose = function(hSocket,err){
var client = AsyncHttpServerObject.client(hSocket);
/*已断开连接,
如果缓冲区中仍然有数据,
这个事件可能在其他事件前面触发
主动调用close函数立即关闭连接,此事件不会被触发,
但onClientClosed事件总会在关闭连接后触发*/
}
AsyncHttpServerObject.onOpen = function(hSocket,err){
var client = AsyncHttpServerObject.client(hSocket);
/*已连接
在这里可以开始发送数据*/
}
AsyncHttpServerObject.onOutOfBandData = function(hSocket,err){
var client = AsyncHttpServerObject.client(hSocket);
/*收到紧急数据
即send函数最后一个flag参数设为_MSG_OOB时发送的1字节带外数据*/
}
AsyncHttpServerObject.onRead = function(hSocket,err){
var client = AsyncHttpServerObject.client(hSocket);
/*收到数据
可阻塞读取数据
定义了此事件就不应同时定义onReceive事件*/
}
AsyncHttpServerObject.onReceive = function(hSocket,err){
var client = AsyncHttpServerObject.client(hSocket);
/*收到数据
仅读取已到达的数据
定义了此事件就不应同时定义onRead事件*/
}
AsyncHttpServerObject.onSend = function(hSocket,err){
var client = AsyncHttpServerObject.client(hSocket);
/*发送数据*/
}
AsyncHttpServerObject.onStop = function(err){
/*已停止服务端
主动调用stop函数停止服务端时不会触发此事件*/
}
AsyncHttpServerObject.onUpgradeProtocol = function(client,request,response){
/*处理客户端升级协议请求,
可在此回调中切换到WebSocket协议*/
}
这是一个包含所有客户端套接字的表对象
其中键为套接字句柄,值为 wsock.tcp.asyncClient对象
单线程异步 HTTP 服务端
浏览器组件发起异步 HTTP 请求支持 asyncHttpServer。
请不要用 inet.http 等阻塞请求同一线程创建的 asyncHttpServer,
这会导致 asyncHttpServer 没有机会响应请求而导致死锁,
一般没必要这样自己 HTTP 请求自己,改成普通函数调用即可,
如果确有这样的需求,可以创建线程调用 inet.http 发起请求,
或改用基于多线程的 wsock.tcp.simpleHttpServer 创建服务端
创建单线程异步 HTTP 服务端