как получить socket_id из толкателя с flask? - PullRequest
0 голосов
/ 06 февраля 2020

Мне не удается получить socket_id от pusher для присутствия и частного канала с помощью метода pusher_client.authenticate. Вот схема, которую нужно понять: enter image description here

Я работаю с flask чертежами. вот URL-адрес сервера для идентификации:

from pusher import Pusher

PUSHER_APP_ID = '123456'
PUSHER_APP_KEY = 'secret109cfb2c29secret'
PUSHER_APP_SECRET = 'PUSHER_APP_SECRET'
PUSHER_APP_CLUSTER = 'eu'
SSL = True

pusher = Pusher(app_id=PUSHER_APP_ID, key=PUSHER_APP_KEY, secret=PUSHER_APP_SECRET, cluster=PUSHER_APP_CLUSTER)

@pousse_bp.route("/pusher/auth", methods=['POST'])
def pusher_authentication():    

     pusher_client = pusher
     auth = pusher_client.authenticate(
        channel=request.form['channel_name'],
        socket_id=request.form['socket_id'])

     flash(auth, 'success')

     print(request.json)
     return json.dumps(auth)

вот мой шаблон:

<form method="post" action="/pousse/pusher/auth">

        <h3>test authenticate pusher</h3>
        <h2>https://pusher.com/docs/channels/server_api/authenticating-users</h2>


        <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>

        <input type="text" name="channel_name" placeholder="channel_name here"><br>





        <input type="submit" name="Submit">
    </form>
</body>
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
    crossorigin="anonymous"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>

<script src="https://js.pusher.com/4.0/pusher.min.js"></script>



<script type="text/javascript">
var pusher = new Pusher('secret109cfb2c29secret', {cluster: 'eu',encrypted: true, authTransport: 'jsonp',authEndpoint: 'pousse/pusher/auth'});


pusher.connection.bind('connected', function() {
        console.log("connected");
        socketId = pusher.connection.socket_id;
        console.log("socketId" + socketId);
    });

var channel = pusher.subscribe('presence-channel');

он не работает, потому что что-то не так для получения socket_id, поэтому он недействителен. я не понимаю, чего ему не хватает в моем коде.

ошибка сообщения на flask: в pusher_authentication

socket_id=request.form['socket_id'])

File "python3.7/site-packages/werkzeug/datastructures.py", line 443, in __getitem__

raise exceptions.BadRequestKeyError(key)

werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
KeyError: 'socket_id'

ошибка консоли mozilla: connected pousseindex: 88: 17 socketId126757. 3121110 pousseindex: 90: 17 Le script à l'adresse «http://localhost: 5000 / pousse / pousse / pusher / auth? Callback = Pus … 27% 5D & socket_id = 126757.3121110 & channel_name = присутствие-канал» и т.д. chargé alors que son типа MIME («текст / html»), но не типа MIME JavaScript валид.

...