dotslash

dotslash

I’m wondering how I can make my channel communication (with front-end) JSON API compliant ( http://jsonapi.org/)? I have used js_serializer in controllers, but how to go about it in socket communication? And please correct me if I’m wrong, but it looks like the default communication is in JSON. Where is this format defined and who is doing the serialization/deserialization?

Another noob question: Does it even make sense to talk about message formats in socket communication? I guess it does, but I’m not sure. I say that because it doesn’t look like there’s any place to specify content type or anything in socket communication.

Showing Posts 1 to 4

StefanHoutzager

StefanHoutzager

I push / broadcast elixir maps, f.e. push socket, “newTaskCurrentUser”, resp, where resp is a map. You can see in the browser console that it is received as a json.

dotslash

dotslash OP

I’m actually talking about the JSON API standard: http://jsonapi.org/ (I’ve edited the question to reflect this) but I think it can’t be done with something like ja_serializer. Since there are no models directly associated with channels, there’s no way to serialize things in a straightforward manner. I guess I’ll have to do it the hard way.

benwilson512

benwilson512

Author of Craft GraphQL APIs in Elixir with Absinthe

One of the nice things about GraphQL being transport agnostic is that you could easily just send graphql docs through a channel, and then have the channel push out data according to what was queried. GraphQL also has a first class concept of subscriptions which we’re hoping will map onto channels very nicely.

JSON API seems to see itself as a way to do REST well, and thus is stuck to scenarios where REST makes sense.

dotslash

dotslash OP

Yes . . . I’ve looked at GraphQL briefly and it does seem to be the right way to do things. At this moment I just don’t have the time to dive into server-side implementation. But you’ve raised an important point.

— All posts loaded —

Where Next? Top

Trending in Questions Top

Blokh
Hey guys, I’ve got a huge CSV ( around 10 GB ) that needs to be processed hourly Do you guys have any suggestions what is the best prac...
New
kszambelanczyk
Hello! Could someone please give me a help/sample code, how to delete a file from s3 using waffle/waffle_ecto from Phoenix app. I creat...
New
Onor.io
I have what I’ve heard referred to as a “lookup table” in my database. This is a way of assigning codes to common values. One common lo...
New
Trolleger
What approach to take when sending live updates to “random” users Hi! I have a question, I have a little chat app, and when I create a DM...
New
matt-savvy
Anyone here using Honeybadger? My Honeybadger account is being overwhelmed with noise from some bots. Seeing a lot of Bandit.HTTPError...
New
RemyXRenard
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
samoloth
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

Other Trending Topics Top

mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
wintermeyer
There are three potential reasons for members of this forum to have a look at https://vutuv.de You are tired or annoyed of LinkedIn. Yo...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews