Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Guide to build a realtime application using Pho...
Search
Takayuki Matsubara
October 31, 2014
Programming
2
2.3k
Guide to build a realtime application using Phoenix on Heroku
#m3dev M3 Tech Talk #32
Guide to build a realtime application using Phoenix on Heroku
Takayuki Matsubara
October 31, 2014
Tweet
Share
More Decks by Takayuki Matsubara
See All by Takayuki Matsubara
Rails Web Development with AWS Lambda
ma2gedev
0
300
Coding Challenge Advent of Code 2019
ma2gedev
0
140
Developer Experience in GraphQL Schema-first Development
ma2gedev
0
2.3k
Dependency Inversion Principle in Keyboard Firmware
ma2gedev
0
490
OSSの歩き方 / Walking with OSS
ma2gedev
10
2.6k
GraphQL 開発で必要になったこと / What we needed for GraphQL development
ma2gedev
0
1.2k
キーボードをカスタムしてプログラミング環境を良くした話 / Improved programming environment with customizing keybords
ma2gedev
0
1.3k
Translating "Erlang in Anger" with Erlang & Elixir community members
ma2gedev
0
2.8k
Dive into Elixir v1.6 Code Formatter
ma2gedev
1
180
Other Decks in Programming
See All in Programming
テストカバレッジ100%を10年続けて得られた学びと品質
mottyzzz
2
370
レガシープロジェクトで最大限AIの恩恵を受けられるようClaude Codeを利用する
tk1351
4
1.5k
コーディングは技術者(エンジニア)の嗜みでして / Learning the System Development Mindset from Rock Lady
mackey0225
2
630
サイトを作ったらNFCタグキーホルダーを爆速で作れ!
yuukis
0
740
Rancher と Terraform
fufuhu
2
170
AI OCR API on Lambdaを Datadogで可視化してみた
nealle
0
220
複雑なドメインに挑む.pdf
yukisakai1225
4
830
AIレビュアーをスケールさせるには / Scaling AI Reviewers
technuma
2
230
Honoアップデート 2025年夏
yusukebe
1
890
AI時代に学習する意味はあるのか?
tomoyakamaji
0
100
STUNMESH-go: Wireguard NAT穿隧工具的源起與介紹
tjjh89017
0
390
[FEConf 2025] 모노레포 절망편, 14개 레포로 부활하기까지 걸린 1년
mmmaxkim
0
1.4k
Featured
See All Featured
Navigating Team Friction
lara
189
15k
Faster Mobile Websites
deanohume
309
31k
BBQ
matthewcrist
89
9.8k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Code Review Best Practice
trishagee
70
19k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
185
54k
Art, The Web, and Tiny UX
lynnandtonic
302
21k
Agile that works and the tools we love
rasmusluckow
330
21k
GitHub's CSS Performance
jonrohan
1032
460k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Designing Experiences People Love
moore
142
24k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
570
Transcript
Guide to build a realtime application using Phoenix on Heroku
Self introduction • ma2ge @Twitter • ma2gedev @GitHub
Requirement • Erlang 17.0+ • Elixir v1.0.1+
Phoenix Framework Web application framework for Elixir I've experienced that
Rails with Realtime feature
Setup a Phoenix environment $ git clone https://github.com/phoenixframework/phoenix.git # $
git checkout v0.4.1 $ cd phoenix $ mix do deps.get, compile ! v0.5.0 does not work on Heroku choose v0.4.1 or edge
Create a Phoenix application $ mix phoenix.new phoenix_sample ../phoenix_sample $
cd ../phoenix_sample $ git init $ git add . $ git commit -m 'initial commit'
Running on local $ mix do deps.get, compile $ mix
phoenix.start • do not forget to commit $ git add . $ git commit -m 'running on local'
Setup for Heroku $ Heroku create --buildpack \ "https://github.com/HashNuke/heroku-buildpack-elixir.git"
Create 2 files need for Heroku
elixir_buildpack.config # Erlang version erlang_version=17.2 # Elixir version elixir_version=1.0.1 #
Always rebuild from scratch on every deploy? always_rebuild=false # Export heroku config vars # config_vars_to_export=(DATABASE_URL)
Procfile web: mix phoenix.start
Running on Heroku $ git add -u $ git commit
-m 'configuration for heroku' $ git push heroku master $ heroku open
Implement chat with websocket
Phoenix part • Create Channel • Mount Socket and register
Channel
Create Channel web/channels/chat.ex defmodule PhoenixSample.Chat do use Phoenix.Channel def join(socket,
"chat", message) do {:ok, socket} end def event(socket, "message", data) do IO.puts data["message"] broadcast socket, "broadcast_message", %{message: data["message"]} socket end end
Mount Socket and register Channel add the following line to
web/ router.ex use Phoenix.Router.Socket, mount: "/ws" channel "channel", PhoenixSample.Chat
Html and JS side • Include some js files •
Add message box • Write some js codes
Include some js files web/templates/layout/ application.html.eex • Need to download
jquery <script src="/js/jquery.js" type="text/javascript"></script> <script src="/js/phoenix.js" type="text/javascript"></script> <script src="/js/application.js" type="text/javascript"></script>
Add message box web/templates/page/ index.html.eex <div class="row"> <input type="text" id="message-box"
placeholder="any comments?"/> <div id="all-messages"></div> </div>
Write some js codes priv/static/js/application.js $(function() { var socket =
new Phoenix.Socket("/ws"); var $messageBox = $("#message-box"); var $allMessages = $("#all-messages"); socket.join("channel", "chat", {}, function(channel) { $messageBox.keypress(function(e) { if (e.which === 13) { e.preventDefault(); channel.send("message", { message: $messageBox.val() }); $messageBox.val(""); } }); channel.on("broadcast_message", function(data) { console.log("message: " + data['message']); $allMessages.prepend('<p>' + data['message'] + '</p>'); }); }); });
Demo http://goo.gl/dDDwXK
See Also • code • https://github.com/ma2gedev/ phoenix_sample • Phoenix •
https://github.com/phoenixframework/ phoenix
See Also • Deploy Phoenix Application to Heroku • http://learnelixir.com/blog/2014/10/15/
deploy-phonenix-application-to-heroku- server/ • Phoenix Λ heroku Ͱಈ͔͢ • http://qiita.com/ma2ge/items/ cfe17e02f593bb55b084
See Also • Elixir ͷΠϯετʔϧ&Ξοϓσʔτ on Mac • http://qiita.com/ma2ge/items/ e8ad02d604a9c05cb6f6
Enjoy Elixir and Phoenix life