Building out an API server to handle json query/response. Setting up the environment I select all the recommended flags for building an API only server.
mix phx.new myjsonapp-api --no-html --no-mailer \
--no-gettext --binary-id --app moondream_api --no-assets
When running it I get a boatload of errors pertaining to to the lack of an available live reload socket.
Researching, I see that the --no-html is incompatible with live reload, which is a bit of a bummer, but I get it.
So, I set code_reloader to false in the dev.exs endpoint configuration, but that didn’t stop the errors.
So, I for further good measure I commented out the code in the endpoint itself, as well as the LiveDashboard configuration.
None of these things seem to stop the attempt of some part of the framework to keep making calls to GET /phoenix/live_reload/socket/websocket
Question 1 – is it actually confirmed true that you can’t do live reload on a json api server?
Question 2 – what am I missing by way of turning off this very nice development feature?
So first of all you should differenciate between phoenix live reload and phoenix code reloader.
Phoenix live reload makes a website reload when any of the files you have a pattern for changed. That’s a JS feature and hence only works with html pages. A json response in a browser cannot execute JS and therefore the server cannot tell the JS client to reload the current page. This is even a separate package, because it only makes sense in a limited context.
Phoenix code reloader is a different feature. It doesn’t cause http requests being made, but if there happens to be an http request it makes sure to recompile any changed files, so the response is built using latest changes in source files and not using stale logic. That plug is part of the phoenix library and therefore generally available if you use phoenix. That one is useful to developing any webserver functionality no matter if html or any other content types are served.
4 Likes
Thanks for that clarification; I did not understand the distinction.
And furthermore, I have ascertained that the answer is that I am running my api server on the same port that I was previously running my webserver on, and an open tab to my localhost was polling home for updates… to my api server, which rightfully didn’t know what it was talking about!
Whee!
2 Likes