Size: a a a

Эликсир и Вунш

2019 February 14

FM

Fey Martynov in Эликсир и Вунш
т.е. case можно убрать в UserSocket.connect/2, а в канале доставать юзера через Guardian.Phoenix.Socket.current_resource(socket)
источник

PZ

Pavel Zachesa in Эликсир и Вунш
источник

FM

Fey Martynov in Эликсир и Вунш
да, но там сокет возвращается, а не юзер
источник

PZ

Pavel Zachesa in Эликсир и Вунш
Вернулся к варианту с мануала, дабавил в конец файла, что получается в итоге. http://caix.ru/kanaly-feniks/
источник

PZ

Pavel Zachesa in Эликсир и Вунш
Пусть будет сокет, как с него инфу требуемую вытянуть?
источник

FM

Fey Martynov in Эликсир и Вунш
ну ты уже близко
источник

FM

Fey Martynov in Эликсир и Вунш
что на 25 строке в сокете происходит?
источник

FM

Fey Martynov in Эликсир и Вунш
а, вижу
источник

FM

Fey Martynov in Эликсир и Вунш
гардиан отадёт такой ресурс: %{id: "1"}, а ошибка возникает при интерполяции
источник

FM

Fey Martynov in Эликсир и Вунш
def id(socket), do: "users_socket:#{Guardian.Phoenix.Socket.current_resource(socket).id}" – это-то поменял?
источник

PZ

Pavel Zachesa in Эликсир и Вунш
Чётко по мануалу сделал... поменяв заодно строку в канале пользователя.
источник

FM

Fey Martynov in Эликсир и Вунш
сложно что-то сказать, когда стек указывает не на тот код
источник

PZ

Pavel Zachesa in Эликсир и Вунш
Вот эта хрень if String.to_integer(user_id) == current_user.id do должна вытащить айдишник перевести в строковый формат и сравнить, как я понимаю.
источник

FM

Fey Martynov in Эликсир и Вунш
наоборот в числовой
источник

PZ

Pavel Zachesa in Эликсир и Вунш
А, значит в user_id должна быть строка?
источник

FM

Fey Martynov in Эликсир и Вунш
да. юзер джоинится к каналу "user:123", который приходит как строка. паттерн матчингом в башке функции отрывается чиселка в строковом формате и кастуется до числа.
источник

FM

Fey Martynov in Эликсир и Вунш
ошибка не там
источник

FM

Fey Martynov in Эликсир и Вунш
String.Chars not implemented for %{id: "1"} возникает при попытке впихнуть мап в строку через интерполяцию типа того: "hello #{%{id: 1}}"
источник

FM

Fey Martynov in Эликсир и Вунш
и стек указывает на user_socket.ex:25: ImconWeb.UserSocket.id/1
источник

FM

Fey Martynov in Эликсир и Вунш
собственно, тут def id(socket), do: "user_socket:#{Guardian.Phoenix.Socket.current_resource(socket)}"
источник