How To Create A Messaging App With Socket.io And React

Поделиться
HTML-код
  • Опубликовано: 12 июн 2024
  • 🚨 IMPORTANT:
    Get started with Embold.io for free: embold.io/products/overview?u...
    Use code US21F29A for 20% off a paid account (Only applicable in India)
    Whatsapp is an incredibly popular application, but the technology behind it is actually pretty simple. In this video I will show you how to create a messaging app similar to Whatsapp with React.
    📚 Materials/References:
    GitHub Code: github.com/WebDevSimplified/W...
    useRef Tutorial: • Learn useRef in 11 Min...
    useState Tutorial: • Learn useState In 15 M...
    useContext Tutorial: • Learn useContext In 13...
    🧠 Concepts Covered:
    - How to use Socket.io
    - How to create custom React hooks
    - How to create custom React contexts
    🌎 Find Me Here:
    My Blog: blog.webdevsimplified.com
    My Courses: courses.webdevsimplified.com
    Patreon: / webdevsimplified
    Twitter: / devsimplified
    Discord: / discord
    GitHub: github.com/WebDevSimplified
    CodePen: codepen.io/WebDevSimplified
    ⏱️ Timestamps:
    00:00:00 - Introduction
    00:00:34 - Demo
    00:02:20 - Code Setup
    00:03:51 - Login Page
    00:13:47 - Custom Local Storage Hook
    00:18:50 - Dashboard
    00:20:21 - Sidebar
    00:29:50 - Create Contact Modal
    00:36:01 - Contact Context
    00:41:18 - Contacts Sidebar
    00:43:01 - Conversation Modal
    00:48:43 - Conversation Context
    00:54:12 - Conversation Sidebar
    00:59:11 - Current Conversation Component
    01:04:50 - Send Message
    01:13:45 - Displaying Messages
    01:23:43 - Server Setup
    01:28:28 - Socket.io On Client
    01:37:26 - Outro
    #Reactjs #WDS #WhatsappClone

Комментарии • 491

  • @zdarofMERGAITES
    @zdarofMERGAITES 3 года назад +463

    I can't believe that 8 months earlier I couldn't understand how a simple function with parameters works. And now I'm watching your video in React at 1.5 speed. To everyone who might be struggling: time and effort will take you where you want!

  • @Ultoman10
    @Ultoman10 3 года назад +6

    I really appreciate your videos so far because you cut out all of the unnecessary crap that makes learning a new concept more confusing. More coding tutorials should be like this!

  • @JohnDoe-rj2kf
    @JohnDoe-rj2kf 3 года назад +25

    this is amazing, but I feel like without the tutorial I woud never be able to do something like this. Beyond words. No way I would do this by myself

  • @traceuse13
    @traceuse13 Год назад +4

    Kyle, you have made learning web dev soooo much easier for me and I appreciate all the hard work you put into this long video. There are so many people out there who are brilliant developers/engineers but who are really bad at explaining things. I'm sorry :P
    You are so good at what you do. Thank you for providing this knowledge for free. You are the most consistently helpful dev RUclipsr I have encountered.

  • @roshatron
    @roshatron 3 года назад +14

    This is exactly what I need for my college project. Thanks, Kyle

  • @sanskaarpatni9137
    @sanskaarpatni9137 3 года назад +212

    Happy teacher's day Kyleeeee

    • @pizzapanni
      @pizzapanni 3 года назад +1

      Lol.

    • @rajesh-royal
      @rajesh-royal 3 года назад

      yes

    • @pratyushshivam1620
      @pratyushshivam1620 3 года назад

      @@pizzapanni what Lol?

    • @LabhamJain
      @LabhamJain 3 года назад

      @AmazingFacts No Fiance. 😜😜😜😝😝😝😝😝😝😝😝😝😝😝😝😝😝

    • @QuicksolutionsOnline
      @QuicksolutionsOnline 3 года назад +3

      How will you eat if you are not hungry. Similarly, how will you learn when you are not interested.
      Teaching is not that special. Many try to spit knowledge, but most do it in the wrong manner. A real teacher guides you, not leaves you confused after telling facts. Teacher is a business, a trade of satisfaction for knowledge. We are happy after learning from someone but then we are unhappy to know we have to guide ourselves further and become our own teachers.
      Teacher's day is actually a celebration of our own selves, not others who incompletely guide us. We are our own masters, our destiny is in our own hands.

  • @adamCoder
    @adamCoder 3 года назад +19

    Man, you're at God level w/ the react. Excelsior, mate.

  • @charlescaldwell2830
    @charlescaldwell2830 2 года назад +57

    As always Kyle, amazing content!!!
    FYI... For anyone that happens to be using Bootstrap 5, some of the classNames may not work. For example, at 10:54, "mr-2" (margin right) would instead be "me-2" (margin end).
    This is also the case with "border-right" needs to be "border-end" at timestamp 27:14.

    • @user-mm1uk3pr5k
      @user-mm1uk3pr5k 2 года назад +1

      you are the best! thank you)

    • @verdyguo
      @verdyguo 2 года назад +1

      Lifesaver mate

    • @eduardogpi123
      @eduardogpi123 2 года назад +1

      @@verdyguo recomended bs5 documentation, it's changing any class...

    • @tttylerrr00
      @tttylerrr00 2 года назад

      Life saver!!!!❤❤❤

    • @prateekrajput2646
      @prateekrajput2646 2 года назад

      Thanks for saving our lives

  • @Rexetorize
    @Rexetorize 3 года назад +16

    You're the best teacher man! You taught me a lot ❤️

  • @shivkampani158
    @shivkampani158 3 года назад +5

    Happy teachers day man! Thank you so much for your videos!

  • @azatecas
    @azatecas 3 года назад +2

    bro, i finally got around to following this tutorial. and i learned so much more than i expected. The fast paced coding made me sweeet at times

  • @rjsingh4998
    @rjsingh4998 3 года назад

    this is solid. almost broke my remote hitting that pause button so many times but def learned a lot with this one. Thanks bro!

  • @smartifi_egypt
    @smartifi_egypt 3 года назад

    Great effort, Kyle
    almost 2 h of recording and hours of searching and coding THANK YOU , I liked the (useState, useContext, useEffect) combination,
    however I distracted a bit with bootstrap and styling but I think it is useful for guys want to tie it all up together.

  • @nitishkhanna9368
    @nitishkhanna9368 3 года назад +2

    Thanks for this tutorial Kyle. Looking forward for a MERN project tutorial.

  • @matiassandacz9145
    @matiassandacz9145 3 года назад +3

    This was exactly what i was looking for! Btw, your code is extremely clean and elegant. Cheers!

  • @alexmorrissey-smith6632
    @alexmorrissey-smith6632 3 года назад +11

    Hey Kyle!
    Love all your tutorials, you explain everything so well
    You should do a Trello Clone!

  • @KaranSharma-ew7io
    @KaranSharma-ew7io 3 года назад +4

    You and Ben Awad are classic gem

  • @jalaliyev
    @jalaliyev 3 года назад +1

    I love this concept. I’m waiting much much more like a project from u. Just keep going

  • @chizuru1999
    @chizuru1999 2 года назад +1

    kyle you know you have a grown a lot!!
    Have been watching your videos since the beginning. Love from India. 🎊

  • @curlydoodle7308
    @curlydoodle7308 3 года назад +1

    Thank you for being the mentor we all needed !

  • @destinlee
    @destinlee 3 года назад +1

    WOW! This was awesome. I know it was simple but I loved the "New" button verbiage switch. Some times it's the little things 😄 Thanks Kyle!!

  • @nicklandreth2527
    @nicklandreth2527 3 года назад

    I really love your coding style.
    I learned Javascript while watching your channel regularly and now I have become a snob I think.

  • @elliottarnold9542
    @elliottarnold9542 3 года назад +36

    At 17.07 there is a mistake in the code, which will lead to the error "Error: A cross-origin error was thrown. React doesn't have access to the actual error object in development." to fix this use => if(jsonValue !== 'undefined' && jsonValue !== null ) return JSON.parse(jsonValue)

    • @adamhardie506
      @adamhardie506 3 года назад

      This helped me out, any idea as to why it doesn't work as shown in video?

    • @lavon7418
      @lavon7418 3 года назад

      thank you so much! I almost gave up after going to the google doc page and the react link for debugging, and still not being able to fix it.

    • @stephenpeters9125
      @stephenpeters9125 3 года назад

      Wow! Thanks, this didn't even come into play until the end.

    • @TheresAStarman21
      @TheresAStarman21 3 года назад

      You should just go to Applications, LocalStorage and clear it out.

    • @hamsithacs4091
      @hamsithacs4091 2 года назад

      @@adamhardie506 maybe a recent update

  • @anshulbisen
    @anshulbisen 3 года назад +4

    I just realized Kyle grew a beard by the end of the video :D. To do all this in a single shot, you are a monster! Respect++

  • @justintie
    @justintie 3 года назад +3

    the speed of narration is breathtaking

  • @rupayanroy2981
    @rupayanroy2981 2 года назад

    Hey, have some love from India. One of the best teachers and tutorial makers!

  • @elliottarnold9542
    @elliottarnold9542 3 года назад

    I instantly subscribed when I saw the project. following along now.

  • @r0nni34
    @r0nni34 3 года назад +1

    i was here just to take hints for the backend... but now I realised there's a lot for me to learn in client side as well. I developed something similar to what you are doing here but mine looks way to complicated , isn't well optimized and have way more line of codes even tho ultimately my code dose the same thing as yours... Now I'll watch your vids and refactor my app to make it as clean and optimized as i can.

  • @nyashamusanhu541
    @nyashamusanhu541 3 года назад +2

    You are a lion my guy. This is every Software Developer's dream

  • @user-qi7kk7su3l
    @user-qi7kk7su3l 2 года назад +8

    It seems InputGroup.Append is not in React Bootstrap anymore, just a Button in InputGroup after From.Control will do.

    • @kw4548
      @kw4548 2 года назад +1

      MVP

  • @AccessCode101
    @AccessCode101 3 года назад +1

    Only channel I play the video and the first second I hit the like button.

  • @ThatGuyDownInThe
    @ThatGuyDownInThe 3 года назад +1

    This taught me so much I'm astounded.

  • @DhruvaShaw
    @DhruvaShaw 3 года назад +2

    thank you kyleeee with this chat app now I use this my own version in my local area network!!!!!! to chat with my only family and friends

  • @Tendou-Gaming
    @Tendou-Gaming 3 года назад +2

    Another Awesome video Kyle! Can you make a video on making a weekly scheduler app?

  • @raocharlie4679
    @raocharlie4679 Год назад +5

    On 17:12 , “ && jsonValue != ‘undefined’” should be added to the ‘if’ parentheses because the browser has returned the error of ‘undefined’ which is a string not a undefined data type. I have tried on Chrome, not sure how other browsers react under this issue.

  • @PrayasArt
    @PrayasArt 3 года назад +3

    Happy teacher's day Kylee sir. ❤️Love from India ❤️

  • @user-mz7pt8tl9n
    @user-mz7pt8tl9n 3 года назад +2

    Mannn, This is lit 🔥🔥🔥 That's what i'm looking for !

  • @masaforce
    @masaforce 3 года назад +5

    Jesus christ this channel is a gem

  • @austinrobinson5995
    @austinrobinson5995 2 года назад

    you do a very good job of explaining everything along the way thanks!

  • @Cat-vd4ju
    @Cat-vd4ju 3 года назад

    Huge fan of your videos Kyle, keep it up!

  • @mydhe6
    @mydhe6 3 года назад +59

    Are the seven dislikes bots? Honestly, what's there to dislike. Thanks for this great video Kyle.

    • @supreetpp
      @supreetpp 3 года назад +6

      some people just had a bad day, and want to share it with the world 😃

    • @jimhalpert9803
      @jimhalpert9803 3 года назад

      Wow in 2 weeks the dislikes grew almost 4 times.

    • @christopherobrien6215
      @christopherobrien6215 3 года назад +1

      heavy usage of bootstrap, needless usage of local storage, and his face

    • @shikharsharma3980
      @shikharsharma3980 3 года назад +1

      Not to be rude and i really don't think these things are enough to dislike a video,
      but kyle has a bad habit of not following naming conventions,
      he names many variables with little to no difference like for say contacts,contact or something simmilar
      hence it becomes very difficult to follow along some times

    • @outbreak3607
      @outbreak3607 3 года назад

      @Luke Mwenda same, I cant keep up with how fast he does things, this is supposed to be a tutorial? I got sooo many errors copying his code, insane

  • @briandesign
    @briandesign 3 года назад +2

    nicee! good to see new React projects

  • @30saransh
    @30saransh 3 года назад +1

    you're the best Teacher. Happy teachers day!!!!

  • @najimali32
    @najimali32 3 года назад +1

    Finally, It runs Kyle Thank you for the video.

  • @rajesh-royal
    @rajesh-royal 3 года назад +2

    wish y luck for 1M 🔥 you work really hard 👍

  • @akashdubey4750
    @akashdubey4750 3 года назад +1

    You're one of my favorite Sir
    Lots of love from India😍

  • @julianstorm7722
    @julianstorm7722 3 года назад +4

    At 50:12:00 hold alt and you can set multiple marks at any point in vs code; this way you save yourself from writing the same all over again.
    There are helpful snippets for importing modules and using hooks as well...Great video. Thanks for your effort much appreciated.

  • @avimehenwal
    @avimehenwal 3 года назад +4

    I so love this channel

  • @godamkeras4144
    @godamkeras4144 2 года назад

    wow! the hooks for local storage is really helpful, gotta apply them in my work..

  • @codito7388
    @codito7388 3 года назад +3

    O my god i don't believe that you made a big tut. Well done body! In my tut i make many hours videos tut. The biggest is 8 hours. Is really very difficult to make big tuts! Again well done!!!

  • @josephwong2832
    @josephwong2832 3 года назад +1

    Thanks a lot Kyle that was great

  • @matiasrondan6227
    @matiasrondan6227 2 года назад

    Awesome video man, thank you for sharing, very useful indeed. Congratulations, you rock!

  • @manuelpineda924
    @manuelpineda924 3 года назад +1

    Awesome video! I always learn something from each one of them. Thank you :)

  • @sivasankar5036
    @sivasankar5036 3 года назад +1

    From your videos ,I think you were a pro at javascript

  • @vansh3777
    @vansh3777 3 года назад +35

    Facebook: *stealing data from users of whatsapp
    Kyle: hold my beer

  • @riyaadhfakier8537
    @riyaadhfakier8537 3 года назад

    Damn man, your videos are so awesome!! Thanks.

  • @mks5988
    @mks5988 3 года назад +1

    I strongly support this handsome guy, sounds good. Simple ,short and precious 🤴.i don't have time to watch this video now see you later.

  • @elijahromer6544
    @elijahromer6544 2 года назад

    AMAZING video. You are an absolute beast and I consider you Kyle as one of my primary coding mentors.
    I'm struggling a little bit to understand the solution to the message scrolling problem at 1:24:00 ... is passing setRef as the ref to the message component automatically pass the element as the node parameter to the setRef callback? and that callback only gets executed if on component re-render, the node has changed?
    React docs also say that the dependency array in useCallback should include parameters. But here we leave it empty... and it works! Lol

  • @pratibhalovesu
    @pratibhalovesu 3 года назад +1

    Kylee love u brother, keep doing it more brother

  • @maomorin
    @maomorin 2 года назад +6

    Damn... I spent literally 10 hours following this... thanks a lot for making this free!
    There are two things that I want to spot out:
    - I think the approach of setting the receivers in an array and group them without a "group id" makes very troublesome all the process. Setting a group code allows to identify inmediatly the group without need to set a ArrayEquality function, and also will save a lot of logic process in the ConversationsProvider component. Also, in the server you just can let the user Join the group code and socket io will do all the send message task.
    - I don't understad why the socket server is working without the CORS implementatio... I did't use CORS params in my local server and it doesn't work, server just refuses conection. Is it perhaps version changes?

    • @VishalSharma-nc7uy
      @VishalSharma-nc7uy 7 месяцев назад

      I'm also unable to make a connection, how did you solve this?

  • @marianodiez5274
    @marianodiez5274 3 года назад

    Awesome video bro!!! Thanks a lot for sharing your knowledge

  • @WOLF91
    @WOLF91 3 года назад

    Great content man. Thanks for sharing your knowledge.

  • @kevinpakalen2593
    @kevinpakalen2593 3 года назад +1

    Amazing work, thanks!

  • @shameekagarwal4872
    @shameekagarwal4872 3 года назад +2

    at 17:54 is there any reson for returning the function while calling it?
    i know that this happens in useState also
    if we have [function, setFunction] = useState()
    we dont do setFunction(nameOfTheFunction)
    we do setFunction(() => nameOfTheFunction)

  • @27vivy
    @27vivy 3 года назад +1

    Keep up all your good work!

  • @scottwoodcock2779
    @scottwoodcock2779 2 года назад

    Super content! You're very good at what you do man. Your channel is invaluable!

  • @notauniquehandle
    @notauniquehandle Год назад

    Great stuff, I followed this using TS, so it took some extra time, but it was worth it!

  • @digigoliath
    @digigoliath 3 года назад +1

    Wow. Awesome!!! TQVM!

  • @maskman4821
    @maskman4821 3 года назад +4

    This is a fantasic tutorial, I wonder why Kyle doesnt use nextjs to create project ? It gives you ssr right out of box, anyway, this is a practical and useful project, you just need to add webrtc to show the live stream !!!

  • @daddykimjongun7777
    @daddykimjongun7777 2 года назад

    nice vid man , appreciate the hard work

  • @oguza7504
    @oguza7504 3 года назад +1

    You are perfect . Awesome content 👏👏

  • @javierperez_com
    @javierperez_com 3 года назад +1

    Awesome masterclass :D

  • @crazydev.2634
    @crazydev.2634 3 года назад +1

    Great work, bro❤️

  • @ismailelsayed936
    @ismailelsayed936 2 года назад

    man you are talented at everything

  • @processorbot8761
    @processorbot8761 3 года назад +2

    another great project!

  • @ujjwalshirpurkar1612
    @ujjwalshirpurkar1612 2 года назад

    i can't keep up with ur speed, i do understand the syntax but i am not able to join the threads, what is working for what, man i need hell lot of practice and reasearch for doing something like this.....salute to you Kyle, u r GOD

  • @kahnmadeit
    @kahnmadeit 3 года назад +1

    u r the best teacher

  • @clipslive1156
    @clipslive1156 3 года назад +2

    nice work hope you could do a slack clone next

  • @moayedmustafa9673
    @moayedmustafa9673 3 года назад +1

    THIS IS CRAZY! I was literally thinking about building this but had no idea how to do it! I love you Kyle!

  • @5hadowalker
    @5hadowalker Год назад

    Thanks heaps for your videos! Would also love some tutorials that include Typescript with React to get some more TS practice :)

  • @LstrnNoob
    @LstrnNoob 3 года назад +2

    Happy teacher's day sir😇😇😊😊😊

  • @barrackroy9776
    @barrackroy9776 3 года назад

    youre the man. this is great

  • @ednethgirao
    @ednethgirao Год назад

    Amazing tutorial, you rock it bro

  • @harikotha7
    @harikotha7 3 года назад +1

    It's here!! ❤️❤️

  • @sumukhakb2701
    @sumukhakb2701 3 года назад

    Great video kyle.

  • @habibmahbub1519
    @habibmahbub1519 3 года назад +1

    is it possible to open the page with a browser of another computer connected with lan cable?

  • @DuyTran-ss4lu
    @DuyTran-ss4lu 3 года назад +1

    This is sick, thanks

  • @abhijith4252
    @abhijith4252 3 года назад +2

    Happy teachers day ❤

  • @victornikliaiev466
    @victornikliaiev466 3 года назад

    Thank you for all your content! This stuff is definitely not for beginners. But I have a question. If I take your course "Learn React Today" , is it for advanced ones, or I can comprehend there all the stuff with basic knowledge of React? Thanks in advance!

  • @najneindustrijaliziraniji
    @najneindustrijaliziraniji 3 года назад +2

    you need to use same bootstrap version as kyle if you want all classes and boilerplates work.
    so if you have problem first uninstall latest react-bootstrap/bootstrap
    yarn remove react-bootstrap bootstrap (or npm uninstall react-bootstrap bootstrap)
    then
    yarn add react-bootstrap@1.3.0 bootstrap@4.5.2
    and finally restart react server

  • @tilakmadichettitheappdeveloper
    @tilakmadichettitheappdeveloper 3 года назад +6

    Hi Kyle !!!! I love you 🤟 keep making awesome stuff

  • @lalit00716
    @lalit00716 3 года назад +3

    Happy teacher day sir.In India teacher is god where there is culture where we facilitating teacher and bows down and touch feet because we believe teacher is god for us.so bows down and touch you feet because you are teacher for me.
    Please kindly request you to create it by angular also.

  • @hectorbracho8177
    @hectorbracho8177 3 года назад

    Great content!!! thank you so much..

  • @TheDeeStain
    @TheDeeStain 3 года назад +1

    Thanks for the tutorial! I do feel this would have been easier with Redux but that's another tutorial lol

  • @FalseDev
    @FalseDev 3 года назад +6

    Kyle: I am speed

  • @vishant898
    @vishant898 3 года назад +1

    Happy Teachers day Kylee.Please tell where are you from?

  • @tesla1772
    @tesla1772 3 года назад +1

    You are jus awesome,🔥😍

  • @muhawenimanajanvier6280
    @muhawenimanajanvier6280 3 года назад

    this is what I needed for my next project.

  • @indrajitsarkar3169
    @indrajitsarkar3169 3 года назад +1

    #githubFollowerGang , knew this video's coming.

  • @the_full_stack_junkie
    @the_full_stack_junkie 3 года назад

    Learnt so much very advanced should definitely do this project again to full understand. But thanks learn how to use useCallback and custom hooks