websocket初级示例
import json
import os
from typing import Union
from tornado.web import url
import tornado.websocket
import tornado.web
import tornado.ioloop
import requests
class Client(tornado.web.RequestHandler):
def get(self):
return self.render('index.html')
class ServerHandle(tornado.websocket.WebSocketHandler):
web_client = set()
def open(self, *args: str, **kwargs: str):
self.web_client.add(self)
def on_message(self, message: Union[str, bytes]):
print(message)
req = requests.post(url='请求地址',json={
'请求参数(userinfo 必须有 perception 请求的问题)'
})
print(req.text)
resdict = json.loads(req.text)
print(resdict['results'][0]['values']['text'])
self.write_message(resdict['results'][0]['values']['text'])
def on_close(self):
self.web_client.remove(self)
def main():
app = tornado.web.Application(handlers=[
url(r'/$',Client,name='index'),
url(r'/ws/$',ServerHandle,name='ws'),
],
debug=True,
autoreload=True,
template_path = os.path.join(os.path.dirname(__file__),'templates')
)
app.listen(8000)
tornado.ioloop.IOLoop.current().start()
if __name__ == "__main__":
main()
前端简单展示及jquery请求
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>联通</title>
</head>
<body>
<input type="text" name="message" id="content">
<input type="button" value="发送">
<hr>
<p id="result">
</p>
</body>
</html>
<script src="********">
</script>
<script>
var ws =new WebSocket('ws://localhost:8000/ws/')
ws.onmessage = function (ev) {
console.log(ev.data)
$('#result').append("<p>"+ev.data+"</p>")
}
$('input[type="button"]').click(function () {
content = $('#content').val()
ws.send(content)
$('#result').append("<p>"+content+"</p>")
})
</script>