123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- local skynet = require "skynet"
- local socket = require "skynet.socket"
- local cjson = require "cjson"
- local tools = require "tools"
- local websocket = require "http.websocket"
- local mysqldbx = require "mysqldbx"
- local closing = false
- local isRunTask = false --是否在工作
- local isActive = false --是否激活
- local handle = {}
- local M = {}
- local RECV_TASK = {}
- local AGENT_ID = 0
- function handle.connect(id)
- print("ws connect from: " .. tostring(id))
- end
- function handle.handshake(id, header, url)
- local addr = websocket.addrinfo(id)
- print("ws handshake from: " .. tostring(id), "url", url, "addr:", addr)
- print("----header-----")
- for k,v in pairs(header) do
- print(k,v)
- end
- print("--------------")
- end
- --工人已完成
- function M.finish_task(id, msg)
- skynet.error("工人已完成:",cjson.encode(msg['data']))
- isRunTask = false --等待老板发送新任务
- end
- --工人未完成
- function M.unfinish_task(id, msg)
- skynet.error("工人未完成:",msg['data'].error_info)
- isRunTask = false
- end
- --工人准备工作
- function M.status_task(id, msg)
- skynet.error("工人准备工作:",id,msg)
- AGENT_ID = id
- isActive = true
- skynet.fork(function()
- RECV_TASK.updateAppConfig()
- -- skynet.sleep(200)
- RECV_TASK.updateFilterConfig()
- -- skynet.sleep(200)
- RECV_TASK.updateMainConfig()
- -- skynet.sleep(200)
- RECV_TASK.updatePlatformConfig()
- RECV_TASK.updateFqKeyList()
- RECV_TASK.updateFqMfKeyList()
- RECV_TASK.updateYwKeyList()
- RECV_TASK.updateBlackBooks()
- RECV_TASK.getPullDataConfig()
- end)
- end
- function handle.message(id, msg, type)
- if msg == "ping" then
- websocket.write(id,"pong")
- return
- end
- msg = cjson.decode(msg)
- if M[msg.cmd] then
- M[msg.cmd](id,msg)
- else
- skynet.error("no find:",msg)
- end
- end
- function handle.ping(id)
- print("ws ping from: " .. tostring(id) .. "\n")
- end
- function handle.pong(id)
- print("ws pong from: " .. tostring(id))
- end
- function handle.close(id, code, reason)
- print("ws close from: " .. tostring(id), code, reason)
- AGENT_ID = 0
- isRunTask = false
- isActive = false
- closing = true
- end
- function handle.error(id)
- print("ws error from: " .. tostring(id))
- end
- local connect = function(fd, addr)
- if closing then
- return
- end
- local protocol = "ws"
- local ok, err = websocket.accept(fd, handle, protocol, addr)
- if not ok then
- skynet.error(err)
- else
- print("websocket connect!")
- end
- end
- function RECV_TASK.isActive()
- return isActive
- end
- function RECV_TASK.isRunStak()
- return isRunTask
- end
- function RECV_TASK.startOneTask(msg_body)
- skynet.error(" 收到老板的任务:",msg_body,AGENT_ID)
- local body = cjson.decode(msg_body)
- if AGENT_ID~=0 then
- isRunTask = true --工人进入工作状态
- websocket.write(AGENT_ID, cjson.encode({cmd="find_book",dy_url=body.dy_url}))
- end
- end
- function RECV_TASK.updatePullConig(msg_body)
- if AGENT_ID~=0 then
- isRunTask = true --工人进入工作状态
- websocket.write(AGENT_ID, cjson.encode({cmd="updatePullConig"}))
- end
- end
- function RECV_TASK.updatePullConig2(msg_body)
- if AGENT_ID~=0 then
- isRunTask = true --工人进入工作状态
- websocket.write(AGENT_ID, cjson.encode({cmd="updatePullConig2"}))
- end
- end
- function RECV_TASK.getPullDataConfig(msg_body)
- if AGENT_ID~=0 then
- isRunTask = true --工人进入工作状态
- websocket.write(AGENT_ID, cjson.encode({cmd="getPullDataConfig"}))
- end
- end
- function RECV_TASK.updateAppConfig(msg_body)
- -- local body = cjson.decode(msg_body)
- if AGENT_ID~=0 then
- isRunTask = true --工人进入工作状态
- websocket.write(AGENT_ID, cjson.encode({cmd="updateAppConfig"}))
- end
- end
- function RECV_TASK.updatePlatformConfig(msg_body)
- if AGENT_ID~=0 then
- isRunTask = true --工人进入工作状态
- websocket.write(AGENT_ID, cjson.encode({cmd="updatePlatformConfig"}))
- end
- end
- function RECV_TASK.updateMainConfig(msg_body)
- if AGENT_ID~=0 then
- isRunTask = true --工人进入工作状态
- websocket.write(AGENT_ID, cjson.encode({cmd="updateMainConfig"}))
- end
- end
- function RECV_TASK.updateFilterConfig(msg_body)
- if AGENT_ID~=0 then
- isRunTask = true --工人进入工作状态
- websocket.write(AGENT_ID, cjson.encode({cmd="updateFilterConfig"}))
- end
- end
- function RECV_TASK.addMain(msg_body)
- if AGENT_ID~=0 then
- isRunTask = true --工人进入工作状态
- websocket.write(AGENT_ID, cjson.encode({cmd="addMain",data=msg_body}))
- end
- end
- function RECV_TASK.updateFqKeyList(msg_body)
- if AGENT_ID~=0 then
- isRunTask = true --工人进入工作状态
- websocket.write(AGENT_ID, cjson.encode({cmd="updateFqKeyList",data=msg_body}))
- end
- end
- function RECV_TASK.updateFqMfKeyList(msg_body)
- if AGENT_ID~=0 then
- isRunTask = true --工人进入工作状态
- websocket.write(AGENT_ID, cjson.encode({cmd="updateFqMfKeyList",data=msg_body}))
- end
- end
- function RECV_TASK.updateYwKeyList(msg_body)
- if AGENT_ID~=0 then
- isRunTask = true --工人进入工作状态
- websocket.write(AGENT_ID, cjson.encode({cmd="updateYwKeyList",data=msg_body}))
- end
- end
- function RECV_TASK.updateBlackBooks(msg_body)
- if AGENT_ID~=0 then
- isRunTask = true --工人进入工作状态
- websocket.write(AGENT_ID, cjson.encode({cmd="updateBlackBooks",data=msg_body}))
- end
- end
- function RECV_TASK.syncMain(msg_body)
- if AGENT_ID~=0 then
- isRunTask = true --工人进入工作状态
- websocket.write(AGENT_ID, cjson.encode({cmd="syncMain",data=msg_body}))
- end
- end
- local dispatch = function(session, address,id, addr,cmd,...)
- if(cmd=="connect") then
- connect(id,addr)
- else
- local f = assert(RECV_TASK[cmd], cmd .. " not found")
- skynet.retpack(f(...))
- end
- end
- skynet.start(function()
- skynet.dispatch("lua", dispatch)
- end)
|