首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将简单的Socket.io应用程序部署到:仍未解决

问将简单的Socket.io应用程序部署到:仍未解决
EN

Stack Overflow用户
提问于 2020-09-29 02:13:08
回答 1查看 357关注 0票数 5

我正在尝试部署一个使用socket.io的小烧瓶应用程序来托管一个小型的实时聊天网站

我成功地在本地运行了它(127.0.0.1)

然后,我使用以下文件将其部署到google应用程序引擎:

main.py

代码语言:javascript
复制
from flask import Flask, render_template
from flask_socketio import SocketIO

app = Flask(__name__)
app.config['SECRET_KEY'] = 'vnkdjnfjknfl1232#'
socketio = SocketIO(app)


@app.route('/')
def sessions():
    return render_template('session.html')

def messageReceived(methods=['GET', 'POST']):
    print('message was received!!!')

@socketio.on('my event')
def handle_my_custom_event(json, methods=['GET', 'POST']):
    print('received my event: ' + str(json))
    socketio.emit('my response', json, callback=messageReceived)

if __name__ == '__main__':
    socketio.run(app, debug=True)

app.yaml

代码语言:javascript
复制
runtime: python

network:
  session_affinity: true

requirements.txt

代码语言:javascript
复制
Flask==0.12.2
flask-socketio
eventlet==0.17.4
gunicorn==18.0.0

旁边是一个功能齐全的HTML页面,其中包含以下脚本:

代码语言:javascript
复制
    <form action="" method="POST">
      <input type="text" class="username" placeholder="User Name"/>
      <input type="text" class="message" placeholder="Messages"/>
      <input type="submit"/>
    </form>

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.3/socket.io.min.js"></script>
    <script type="text/javascript">
      var socket = io.connect('https://' + document.domain + ':' + location.port);

      socket.on( 'connect', function() {
        socket.emit( 'my event', {
          data: 'User Connected'
        } )
        var form = $( 'form' ).on( 'submit', function( e ) {
          e.preventDefault()
          let user_name = $( 'input.username' ).val()
          let user_input = $( 'input.message' ).val()
          socket.emit( 'my event', {
            user_name : user_name,
            message : user_input
          } )
          $( 'input.message' ).val( '' ).focus()
        } )
      } )
      socket.on( 'my response', function( msg ) {
        console.log( msg )
        if( typeof msg.user_name !== 'undefined' ) {
          $( 'h3' ).remove()
          $( 'div.message_holder' ).append( '<div><b style="color: #000">'+msg.user_name+'</b> '+msg.message+ "\n" + '</div>' )
        }
      })
    </script>

下面是链接,您可以看到正在发生的事情:https://flask-chat-for-mckenna.wl.r.appspot.com/

更新

在将端点从

更改为HTTPS后,我再也得不到405了(谢谢您,Simeon!)好像在连接上有问题吗?停止缓冲

所用的时间比平时要长

所有代码都是最新的

提前谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-09-29 15:16:06

错误是通知您浏览器拒绝访问不安全的端点。

当在https://...上服务的页面试图访问位于http://...的资源时,就会发生这种情况。

幸运的是,在这种情况下,您可以控制不安全的端点,并可以通过更改

代码语言:javascript
复制
var socket = io.connect('http://' + document.domain + ':' + location.port);

至

代码语言:javascript
复制
var socket = io.connect('https://' + document.domain + ':' + location.port);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64111919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档