44 lines
1.3 KiB
Lua
44 lines
1.3 KiB
Lua
|
|
local skynet = require "skynet"
|
|||
|
|
local socket = require "skynet.socket"
|
|||
|
|
local httpd = require "http.httpd"
|
|||
|
|
local urllib = require "http.url"
|
|||
|
|
local sockethelper = require "http.sockethelper"
|
|||
|
|
|
|||
|
|
-- 发送html
|
|||
|
|
local function response(id, ...)
|
|||
|
|
local ok, err = httpd.write_response(sockethelper.writefunc(id), ...)
|
|||
|
|
if not ok then
|
|||
|
|
-- if err == sockethelper.socket_error , that means socket closed.
|
|||
|
|
skynet.error(string.format("fd = %d, %s", id, err))
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
local function handle(id)
|
|||
|
|
socket.start(id) -- 这里一定要start,否则不会接收来自客户端的请求
|
|||
|
|
print("handle",id)
|
|||
|
|
local code, url, method, header, body = httpd.read_request(sockethelper.readfunc(id), 8192)
|
|||
|
|
print(code, url, method, header, body)
|
|||
|
|
if code then
|
|||
|
|
print(code, url, method, header, body)
|
|||
|
|
local f = io.open("/home/gdut17/skynet_test/websocket/index3.html", "r")
|
|||
|
|
local index_html = f:read("*a")
|
|||
|
|
f:close()
|
|||
|
|
response(id, code, index_html)
|
|||
|
|
end
|
|||
|
|
socket.close(id)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
local function accept(clientfd, addr)
|
|||
|
|
--skynet.newservice("agent", clientfd, addr)
|
|||
|
|
-- skynet.error("http req ",clientfd,addr)
|
|||
|
|
--handle(clientfd)
|
|||
|
|
skynet.fork(handle,clientfd)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
|
|||
|
|
skynet.start(function ()
|
|||
|
|
local listenfd = socket.listen("0.0.0.0", 9999)
|
|||
|
|
skynet.error("http server listen on 0.0.0.0:9999")
|
|||
|
|
socket.start(listenfd, accept)
|
|||
|
|
end)
|