websocket:连接到ubuntu上的服务器时出现问题

时间:2020-08-08 02:02:37

标签: python linux docker websocket

我有一个用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)

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

解决了它,而不是使用-p 5080:8080,我只使用-p 5080:8000就可以了!