Мне не удается получить socket_id от pusher для присутствия и частного канала с помощью метода pusher_client.authenticate. Вот схема, которую нужно понять:
Я работаю с 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 валид.