目錄
-
邏輯
import json import requests # 第三方庫,負責發起請求,需要安裝: pip install requests import tornado.web import tornado.ioloop import tornado.options import tornado.websocket from settings import config tornado.options.define('port',default=9000,type=int) class ClientHandler(tornado.web.RequestHandler): def get(self): self.render("chat.html") ws_client = set() class ServerHandler(tornado.websocket.WebSocketHandler): def open(self,*args): ws_client.add(self) # 接收客戶端發過來的消息 def on_message(self, message): print(message) dict1 = { "reqType":0, "perception": { "inputText": { "text": message }, }, "userInfo": { "apiKey": "自己的apikey", "userId": "自己的" } } # 把來自客戶端的信息發送給圖靈機器人 res = requests.post(url="http://openapi.tuling123.com/openapi/api/v2", json=dict1) # 獲取返回的消息 # print(res.text) res = json.loads(res.text) # 轉換爲字典 print(res) res = res["results"][0]["values"]["text"] print(res) # 回覆客戶端 self.write_message(res) def on_close(self): ws_client.remove(self) def main(): app = tornado.web.Application( [(r'/',ClientHandler), (r'/ws',ServerHandler), ], **config ) server = tornado.web.HTTPServer(app) server.listen(tornado.options.options.port) tornado.ioloop.IOLoop.current().start() if __name__ == '__main__': main()
-
配置
# settings.py config = { 'debug':True, 'static_path':"static", 'template_path':'templates', }
-
頁面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>聊天</title> </head> <body> <input type="text" name="msg" id="msg"> <input type="button" value="說" id="speak"> <div id="content"> </div> </body> </html> <script src="https://cdn.bootcss.com/jquery/1.12.3/jquery.slim.min.js"></script> <script> var ws = new WebSocket('ws://127.0.0.1:9000/ws'); $("#speak").click(function(){ // 獲取信息 msg = $("#msg").val(); // 發行信息給服務器 ws.send(msg) }) // 接收服務器端發過來的信息 ws.onmessage = function(evt){ $("#content").append("<p>"+evt.data+"</p>") } </script>