anurag.peshne
Hello,
I’m new to Phoenix and I’m following this tutorial Channels — Phoenix v1.8.8 to implement something similar to chat application as described in that tutorial.
That article talks about how to broadcast a message, I want to send a message to a particular user. And I couldn’t find something similar to send. How I can do that.
Also, to do this, do I have to save all the connected socket objects in another process’s state, maybe using a map which maps username → socket.
Trending in Questions
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
Hello,
I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
I’m seeing that a list inside a Kino.DataTable will be interpreted as a charlist, even if the Kino.configure() is set to charlists: :as_l...
New
So my question is quite simple and i have found no conclusive answer on forum, google or AI.
Should we use :erlang.float for Integer to ...
New
Documentation
While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
Hi, I’ve just set up an application with ash_authentication. There is only magic link strategy for now, so there is no confirmation add o...
New
If a change or preparation module uses Ash.Changeset.get_argument/2 or Ash.Query.get_argument/2 (or any of the other get_argument functio...
New
Other Trending Topics
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hi there! We created Gust: A task orchestrator inspired by Airflow.
For those who have never heard about Aiflow, it’s a Python-based wor...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself.
My main conc...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixirconf-us
- #ai
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming










Showing Posts 1 to 10- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
amnu3387
One way to do it would be to subscribe your users to a particular topic individual to each one of them. Then you would have a way of sending particular messages to them using that topic and simply broadcasting to it, effectively working as if you were “sending” them a message. Of course this only accounts for when the receiving user is online and subscribed to his own topic.
anurag.peshne
Thanks, this should work.
How costly/cheap is creating a topic?
amnu3387
AFAIK the phoenix team is not yet charging for creating topics, so it’s free.
(j/k)
The cost will probably be one entry with one term in an ETS table? How that translates into “really” useful information I’m not sure.
kokolegorille
The trick is to broadcast to a specific user with
axelson
Quite cheap, I wouldn’t worry about it at this point.
ankhnaton
video tutorial for user to user private messages
Zesky665
I might be able to do this if you’re still interested.
SZJX
I just wonder if there’s a way to do it without having to create additional channels per user/use specific user IDs. In my use case there will be no registration and there will be no preexisting IDs unless I generate a random one for each new user who connects, which is doable but doesn’t feel exactly natural.
I wonder if there’s a way for
Presenceto actually fetch specific processes/sockets, e.g. to fetch the first socket connection of the first user that joined, and pair her with the second user as soon as the second user joins. It doesn’t seem exactly easy though so far.I meant to make a new post but the tag selection seems broken at the moment.
idi527
You can access the underlying websocket like in Broadcast to socket without channel - #27 by vlad.grb and communicate with the user directly via it, if that’s what you need.
SZJX
I guess my problem is how I can keep track of the socket IDs/PIDs. I think I’m still a bit confused over all the terminologies and their relations between each other.
In short, my use case:
My question is, when the third user joins, how can I:
The problem with normal Channel and Presence mechanisms is that they don’t seem to be able to hold any global state.
One mechanism that I’ve thought of with Presence (likely to be incorrect):
In the example you linked there is the use of
Registry. Are you suggesting to record the PIDs of the first two users in Registry under keys such asfirst_user,second_user, and then look them up and send messages to them viasend(socket_pid, {:socket_push, :text, Poison.encode!(%{"oh" => "my"})})?