【问题标题】:websocket : problem connecting to server on ubuntuwebsocket:连接到ubuntu上的服务器的问题
【发布时间】:2020-08-09 02:52:52
【问题描述】:

我有一个用 python 编写的 websocket 服务器脚本(使用 Flask 和 socketIO)。 当我在计算机上本地运行脚本时,我可以使用“websocket tester app”轻松地从手机连接到套接字。

但是当我在我的 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)

有人可以帮我吗?

【问题讨论】:

  • 您是否通过设置VPC在您的云上打开了端口?
  • 我需要这样做吗?我可以从外部连接到我的数据库和 apache 服务器,那我为什么需要这样做呢?
  • 云可以通过默认过滤某些端口来保护您免受攻击。

标签: python linux docker websocket


【解决方案1】:

解决了它,而不是使用 -p 5080:8080 我可以简单地使用 -p 5080:8000 所以现在它可以工作了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-05
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 2010-10-11
    • 2019-03-12
    相关资源
    最近更新 更多