>  기사  >  웹 프론트엔드  >  Vue.js와 Elixir 언어의 결합으로 실시간 채팅 및 커뮤니케이션 애플리케이션 구현

Vue.js와 Elixir 언어의 결합으로 실시간 채팅 및 커뮤니케이션 애플리케이션 구현

WBOY
WBOY원래의
2023-07-30 09:12:41798검색

Vue.js와 Elixir 언어의 결합으로 실시간 채팅 및 커뮤니케이션 애플리케이션 구현

모바일 인터넷의 대중화와 함께 실시간 채팅 및 커뮤니케이션 애플리케이션이 점점 더 대중화되고 있습니다. Vue.js와 Elixir는 최근 몇 년간 많은 주목을 받고 있는 두 가지 기술로 각각 프론트엔드와 백엔드 분야의 선두주자입니다. 이 글에서는 Vue.js와 Elixir를 결합하여 실시간 채팅 및 커뮤니케이션 애플리케이션을 구축하는 방법을 소개합니다.

우선 기본적인 통신 백엔드를 구축하고 Elixir를 사용해 구현해야 합니다. Elixir는 강력한 동시성 기능과 내결함성을 갖춘 Erlang 가상 머신을 기반으로 하는 함수형 프로그래밍 언어입니다. Phoenix 프레임워크를 사용하여 효율적인 웹 애플리케이션을 신속하게 구축할 수 있습니다.

  1. 먼저 Elixir와 Phoenix 프레임워크를 설치하세요. 명령줄에서 다음 명령을 실행합니다.

    $ mix archive.install hex phx_new 1.5.8
    $ mix phx.new chat_app
  2. 프로젝트 디렉터리로 이동하여 채팅 기능의 주요 부분을 만듭니다.

    $ cd chat_app
    $ mix phx.gen.live Chat Room rooms name:string
    $ mix ecto.migrate

위 명령은 채팅 관련 모델, 컨트롤러 및 보기를 생성합니다. 데이터베이스 마이그레이션을 수행합니다.

  1. Elixir 백엔드 서버 시작:

    $ mix phx.server

    이제 Elixir 백엔드 설정이 완료되었습니다.

다음으로 Vue.js를 사용하여 프런트엔드 인터페이스를 구축하고 백엔드와 실시간으로 통신하겠습니다. Vue.js는 사용자 인터페이스 구축에 초점을 맞춘 경량 JavaScript 프레임워크입니다.

  1. Vue.js 프로젝트를 생성하고 필요한 일부 종속성을 설치합니다.

    $ vue create chat_app_frontend
    $ cd chat_app_frontend
    $ npm install axios vue-axios pusher-js laravel-echo
  2. src/main.js 파일을 열고 다음 코드를 추가하세요.

    import Vue from 'vue'
    import App from './App.vue'
    import axios from 'axios'
    import VueAxios from 'vue-axios'
    import Echo from 'laravel-echo'
    
    Vue.config.productionTip = false
    
    Vue.use(VueAxios, axios)
    
    window.Echo = new Echo({
     broadcaster: 'pusher',
     key: 'YOUR_PUSHER_KEY',
     cluster: 'YOUR_PUSHER_CLUSTER',
     encrypted: true
    });
    
    new Vue({
      render: h => h(App),
    }).$mount('#app')

위 코드는 백그라운드와 통신하기 위해 axios 및 Echo 인스턴스를 설정합니다.

  1. src/comComponents 디렉터리에 Chat 컴포넌트를 생성하고 다음 코드를 추가합니다.

    <template>
      <div>
     <h2>Chat Room</h2>
     <div v-for="message in messages" :key="message.id">
       <strong>{{ message.username }}</strong>: {{ message.content }}
     </div>
     <form @submit.prevent="sendMessage">
       <input type="text" v-model="newMessage" placeholder="Enter message">
       <button type="submit">Send</button>
     </form>
      </div>
    </template>
    
    <script>
    export default {
      data() {
     return {
       messages: [],
       newMessage: ''
     }
      },
      created() {
     window.Echo.join('chat')
       .here((users) => {
         console.log(users);
       })
       .joining((user) => {
         console.log(user);
       })
       .leaving((user) => {
         console.log(user);
       })
       .listen('NewMessage', (message) => {
         this.messages.push(message);
       });
      },
      methods: {
     sendMessage() {
       axios.post('/api/messages', { content: this.newMessage })
         .then(() => {
           this.newMessage = '';
         })
         .catch((error) => {
           console.error(error);
         });
     }
      }
    }
    </script>

위 코드는 채팅방의 내용을 표시하고 메시지를 보내고 받는 기능을 구현합니다.

  1. src/App.vue 파일을 편집하고 Chat 구성 요소를 가져와 템플릿에 추가합니다.

    <template>
      <div id="app">
     <Chat />
      </div>
    </template>
    
    <script>
    import Chat from './components/Chat.vue'
    
    export default {
      name: 'App',
      components: {
     Chat
      }
    }
    </script>

이 시점에서 프런트 엔드 코드가 완성되었습니다.

마지막으로, 프론트엔드 요청을 처리하기 위해 Elixir 백엔드에 API 인터페이스를 제공해야 합니다:

  1. chat_app/lib/chat_web/router.ex 파일을 열고 다음 코드를 추가하세요:

    scope "/api", ChatWeb do
      pipe_through :api
    
      resources "/messages", MessageController, except: [:new, :edit]
    end

The 위의 코드는 메시지 관련 API 인터페이스를 생성합니다.

  1. chat_app/lib/chat_web/controllers/message_controller.ex 파일을 생성하고 다음 코드를 추가합니다.

    defmodule ChatWeb.MessageController do
      use ChatWeb, :controller
    
      alias ChatWeb.Message
    
      def create(conn, %{"content" => content}) do
     changeset = Message.changeset(%Message{}, %{content: content})
     
     case Repo.insert(changeset) do
       {:ok, message} ->
         ChatWeb.Endpoint.broadcast("chat", "new_message", %{id: message.id, content: message.content, username: "Anonymous"})
         conn |> json(%{status: "ok"})
       _ ->
         conn |> json(%{status: "error"})
     end
      end
    end

위 코드는 프런트 엔드에 대한 POST 요청을 처리하여 메시지를 보내고 메시지를 브로드캐스트합니다. "채팅" 채널 클라이언트에 대한 모든 연결에 대한 콘텐츠입니다.

이 시점에서 실시간 채팅 및 커뮤니케이션 애플리케이션을 구현하기 위해 Vue.js와 Elixir의 결합이 완료되었습니다. Vue.js를 프런트엔드 프레임워크로 사용하면 실시간으로 채팅 내용을 표시하고 메시지를 보낼 수 있으며, 백엔드 프레임워크로 Elixir를 사용하면 메시지 수신 및 브로드캐스트를 효율적으로 처리할 수 있습니다. Vue.js와 Elixir를 결합하면 강력하고 성능이 뛰어난 실시간 채팅 및 메시징 애플리케이션을 구축할 수 있습니다.

이 글이 애플리케이션 개발을 위해 Vue.js와 Elixir를 이해하고 사용하려는 독자들에게 도움이 되기를 바랍니다.

위 내용은 Vue.js와 Elixir 언어의 결합으로 실시간 채팅 및 커뮤니케이션 애플리케이션 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.