我有一个用python编写的websocket服务器脚本(使用Flask和socketIO)。 当我在计算机上本地运行脚本时,可以使用“ websocket测试器应用”轻松地从手机连接到套接字。
但是当我在ubuntu服务器(数字海洋云)上部署相同的脚本时,我无法连接到该脚本!
我正在使用docker进行部署,这是我使用的“ docker脚本”:
docker build -t websocketserver .
docker run -d -p 5080:8080 --restart always --name my_second_docker_running websocketserver
我正在运行此命令以检查是否有一些错误:
docker logs --tail 500 my_second_docker_running
但是一切似乎都很好,但是仍然..
有人知道问题出在哪里吗?
如果需要(我不这么认为),那么这里是我的python脚本:
from aiohttp import web
import socketio
import aiohttp_cors
import asyncio
import asyncio as aio
import logging
# creates a new Async Socket IO Server
sio = socketio.AsyncServer()
# Creates
app = web.Application()
sio.attach(app)
# AIOSerial now logs! uncomment below for debugging
logging.basicConfig(level=logging.DEBUG)
async def index(request):
with open('index.html') as f:
print("Somebody entered the server from the browser!")
return web.Response(text=f.read(), content_type='text/html')
@sio.on("android-device")
async def message(sid, data):
print("message: ", data)
@sio.on("device-id")
async def message(sid, android_device_id):
print("DEVICE ID: ", android_device_id)
@sio.on("disconnected-from-socket")
async def message(sid, disconnected_device):
print("Message from client: ", disconnected_device)
@sio.on('sendTextToServer')
async def message(sid, data):
print("message: " , data)
if data == "hei":
await sio.emit("ServerMessage", {"Message from server:": "du skrev hei? Da skriver jeg hei tilbake!"})
if data == "lol":
await sio.emit("ServerMessage", {"Message from server:": "hehe, funny right?.."})
else:
await sio.emit("ServerMessage", {"Message from server:": "Hello There!"})
async def send_message_to_client():
print("this method got called!")
await sio.emit("SuperSpecialMessage", {"Message from server:": "MESSAGE FROM SENSOR"})
# We bind our aiohttp endpoint to our app
# router
cors = aiohttp_cors.setup(app)
app.router.add_get('/', index)
# We kick off our server
if __name__ == '__main__':
print("websocket server is running!")
the_asyncio_loop = asyncio.get_event_loop()
run_the_websocket = asyncio.gather(web.run_app(app))
run_both_loops_together = asyncio.gather(run_the_websocket)
results = the_asyncio_loop.run_until_complete(run_both_loops_together)
有人可以帮我吗?
答案 0 :(得分:0)
解决了它,而不是使用-p 5080:8080
,我只使用-p 5080:8000
就可以了!