1.首先使用pip安装tornado:过程自己百度搜一下,例子很多这里不着重介绍;
2安装好之后先修改tornado的配置文件asyncio.py
路径一般在这里:
D:\python\software\Lib\site-packages\tornado\platform
打开asyncio.py文件在后面加上
import sys
if sys.platform == 'win32':
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
注:如果不加的话会报如下错误:
Traceback (most recent call last):
File "D:/pycharm/project/learn/webSocket.py", line 19, in <module>
application.listen(9090)
File "D:\python\software\lib\site-packages\tornado\web.py", line 2116, in listen
server.listen(port, address)
File "D:\python\software\lib\site-packages\tornado\tcpserver.py", line 152, in listen
self.add_sockets(sockets)
File "D:\python\software\lib\site-packages\tornado\tcpserver.py", line 165, in add_sockets
self._handlers[sock.fileno()] = add_accept_handler(
File "D:\python\software\lib\site-packages\tornado\netutil.py", line 279, in add_accept_handler
io_loop.add_handler(sock, accept_handler, IOLoop.READ)
File "D:\python\software\lib\site-packages\tornado\platform\asyncio.py", line 100, in add_handler
self.asyncio_loop.add_reader(fd, self._handle_events, fd, IOLoop.READ)
File "D:\python\software\lib\asyncio\events.py", line 501, in add_reader
raise NotImplementedError
NotImplementedError
3.编写浏览器htm文件
<!DOCTYPE HTML>
<html>
<head>
<title>Tornado Websocket</title>
<script type="text/javascript">
var ws;
function onLoad() {
ws = new WebSocket("ws://localhost:9090/");
ws.onmessage = function (e) {
// alert(e.data)
console.log(e.data)
}
}
function sendMsg() {
ws.send(document.getElementById('msg').value);
}
</script>
</head>
<body onload='onLoad();'>
<h1>hahhahahahahaah</h1>
Message to send: <input type="text" id="msg"/>
<input type="button" onclick="sendMsg();" value="发送"/>
</body>
</html>
4.编写服务器python代码,并运行;
from tornado import ioloop
from tornado.web import Application
from tornado.websocket import WebSocketHandler
class EchoWebSocket(WebSocketHandler):
def open(self):
print("WebSocket opened") # 处理client发送的数据
def on_message(self, message):
print(message)# 将数据发送给连接的client
self.write_message(u"server said: " + message)
def on_close(self):
print("WebSocket closed")# 允许所有跨域通讯,解决403问题
def check_origin(self, origin):
return True
if __name__ == "__main__":
application = Application([(r"/", EchoWebSocket),])
application.listen(9090)
ioloop.IOLoop.current().start()
5,结果展示:
左边是服务器端,右边是浏览器端;
如果无法实现或者有意见的话欢迎叨扰!!!!!!!!!!!!