Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F84166839
user_socket.ex
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
1 KB
Referenced Files
None
Subscribers
None
user_socket.ex
View Options
defmodule
Pleroma.Web.UserSocket
do
use
Phoenix.Socket
alias
Pleroma.User
## Channels
# channel "room:*", Pleroma.Web.RoomChannel
if
Application
.
get_env
(
:pleroma
,
:chat
)
|>
Keyword
.
get
(
:enabled
)
do
channel
(
"chat:*"
,
Pleroma.Web.ChatChannel
)
end
## Transports
transport
(
:websocket
,
Phoenix.Transports.WebSocket
)
# transport :longpoll, Phoenix.Transports.LongPoll
# Socket params are passed from the client and can
# be used to verify and authenticate a user. After
# verification, you can put default assigns into
# the socket that will be set for all channels, ie
#
# {:ok, assign(socket, :user_id, verified_user_id)}
#
# To deny connection, return `:error`.
#
# See `Phoenix.Token` documentation for examples in
# performing token verification on connect.
def
connect
(%{
"token"
=>
token
},
socket
)
do
with
{
:ok
,
user_id
}
<-
Phoenix.Token
.
verify
(
socket
,
"user socket"
,
token
,
max_age
:
84600
),
%
User
{}
=
user
<-
Pleroma.Repo
.
get
(
User
,
user_id
)
do
{
:ok
,
assign
(
socket
,
:user_name
,
user
.
nickname
)}
else
_e
->
:error
end
end
# Socket id's are topics that allow you to identify all sockets for a given user:
#
# def id(socket), do: "user_socket:#{socket.assigns.user_id}"
#
# Would allow you to broadcast a "disconnect" event and terminate
# all active sockets and channels for a given user:
#
# Pleroma.Web.Endpoint.broadcast("user_socket:#{user.id}", "disconnect", %{})
#
# Returning `nil` makes this socket anonymous.
def
id
(
_socket
),
do
:
nil
end
File Metadata
Details
Attached
Mime Type
text/x-ruby
Expires
Thu, Jun 4, 7:15 PM (1 d, 1 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1539287
Default Alt Text
user_socket.ex (1 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment