質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

Q&A

1回答

3435閲覧

Python - CGIHandlerでのflask_socketioの実行について

starrow1103

総合スコア137

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

0グッド

0クリップ

投稿2017/06/07 00:17

編集2022/01/12 10:55

前提

Python 3.6.1
サーバー:さくらレンタルサーバー
フレームワーク:Flask, flask_socketio

困っていること

さくらのレンタルサーバーで、CGIを実行してサイトを立ち上げることはできましたが、socketioを使ったリアルタイム通信をどのように実現するのか、よくわからず困っています。
具体的な答えでなくても構いません。

こんなこと試したらどう?などの回答も受け付けています。
よろしくお願いします。

index.cgi

こちらは通常のindex.cgi。

python

1from wsgiref.handlers import CGIHandler 2from main import app, # socketioにしたい 3CGIHandler().run(app) #ここの部分

main.py

python

1from flask import Flask, render_template, request, redirect 2from flask_socketio import SocketIO, emit 3 4app = Flask(__name__) 5app.config['SECRET_KEY'] = 'hoge' 6socketio = SocketIO(app, async_mode=None) 7 8#以下略

試したこと

index.cgi

python

1from wsgiref.handlers import CGIHandler 2from main import socketio 3CGIHandler().run(socketio)

python

1from wsgiref.handlers import CGIHandler 2from main import app, socketio 3CGIHandler().run(socketio.run(app))

python

1from wsgiref.handlers import CGIHandler 2from main import app, socketio 3socketio.run(app,host='0.0.0.0')

等、、、

このindex.cgiについて、正しい書き方をご存知の方いらっしゃいましたら、ご教授ください。

具体的な答えでなくても構いません。

こんなこと試したらどう?などの回答も受け付けています。
よろしくお願いします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

直接的な回答ではありません。
以下のブログなどをご覧になりましたか?

https://blog.miguelgrinberg.com/post/easy-websockets-with-flask-and-gevent

ここを読んで分からない部分を具体的に質問したほうが、回答がつきやすいと思います。

投稿2017/06/19 07:33

pashango2

総合スコア930

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

starrow1103

2017/06/19 07:38

回答ありがとうございます泣 一応、そこのsocket.ioに関する記事はさらった過去がありました。 存じなかったのですが、Flask全体に関して詳細に記事にされているブログですね
pashango2

2017/06/19 07:48

https://flask-socketio.readthedocs.io/en/latest/ にあるように from wsgiref.handlers import CGIHandler from main import app, socketio socketio.run(app) ではダメなのですか? またhostにlocalhost(127.0.0.1)を指定してはどうですか? 動作しないのであればエラーメッセジなどがあれば、もっと手がかりになります。
pashango2

2017/06/19 07:51

これでダメであれば、flask_socket_ioというよりもさくらインターネットサーバの仕様の問題ですので、素直にユーザーサポートにメールしたら、手っ取り早いんじゃないかと思いました。 回答が来たら、是非こちらに反映してもらえるとうれしいですね。
starrow1103

2017/06/20 04:58

おそらく、socket.io用のサーバーを立ち上げなければならないのではと思っています。 そこらへん、サーバーの知識が乏しく、さらに勉強しなければなりません><;
pashango2

2017/06/20 05:10 編集

サーバーの知識というよりも、さくらレンタルサーバーは共用サーバーなので制限がある可能性はありますね。おそらく普通のサーバーとは違う独自ルールがあると思います。 socketと言っても単なるTCP/IP通信ですから、socket.io用のサーバーを立ち上げなければならない事はないと思います。 スケールアウトを考えてDockerでコンテナを分けておく事は良いと思いますが、現時点では別サーバが必須とは思えません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問