为什么我的socket是none啊
这边的socket是直接从requests获取的
代码是:
from geventwebsocket.handler import WebSocketHandler
from geventwebsocket.server import WSGIServer
from geventwebsocket.websocket import WebSocket # 语法提示
from flask import Flask, request,render_template,abort
app = Flask(__name__)
@app.route('/')
def base():
return render_template('wsClient.html')
socketList = []
@app.route('/ws')
def ws():
socket = request.environ.get('wsgi.websocket') # type:WebSocket
socketList.append(socket)
print(socket)
while True:
msg = socket.receive()
print(msg)
for i in socketList:
if msg =='一号模式':
i.send('一条龙服务')
elif msg =='二号模式':
i.send('一条蛇服务')
else:
i.send('啥也不是')
return '200 ok'
if __name__ == '__main__':
# app.run('0.0.0.0',5000)
httpServer = WSGIServer(listener=("0.0.0.0", 5000), application=app, handler_class=WebSocketHandler)
httpServer.serve_forever()
测试了你的代码没问题,不过有点要稍微调整下socket断开的问题,会得到None信息,并且要从socketList移除对象,要不断开的socket对象调用send会出错.有帮助麻烦点个采纳【本回答右上角】,谢谢~~
from geventwebsocket.handler import WebSocketHandler
from geventwebsocket.server import WSGIServer
from geventwebsocket.websocket import WebSocket # 语法提示
from flask import Flask, request,render_template,abort
app = Flask(__name__)
@app.route('/')
def base():
return render_template('wsClient.html')
socketList = []
@app.route('/ws')
def ws():
socket = request.environ.get('wsgi.websocket') # type:WebSocket
socketList.append(socket)
while True:
if socket.closed:#当前链接断开要退出,并从集合中移除
socketList.remove(socket)
break
msg = socket.receive()
print(msg)
if msg!=None:#None是其他用户链接或者断开发送的
for i in socketList:
if msg =='一号模式':
i.send('一条龙服务')
elif msg =='二号模式':
i.send('一条蛇服务')
else:
i.send('啥也不是')
return '200 ok'
@app.route("/chat")
def chat():
return render_template("chat.html")
if __name__ == '__main__':
# app.run('0.0.0.0',5000)
httpServer = WSGIServer(listener=("0.0.0.0", 5000), application=app, handler_class=WebSocketHandler)
httpServer.serve_forever()
怎么没有看到socket设置IP和端口呢?