1660264200
在实时聊天应用程序中,收件人几乎可以立即查看发件人的消息。这可以是两方之间的一对一对话,也可以是小组对话。
这就是我们将在本教程中构建的内容。对于这个应用程序,我们将使用直观的 Vue 框架Nuxt。
现在我们知道我们将要构建什么以及我们将使用的技术,让我们回顾一下我们将使用的聊天 API。
在本文中,我们将使用Robin,因为它的 UI 极少,而且它很容易集成到我们的应用程序中。有了这个,让我们开始吧。
第 1 步 - 创建 Nuxt 应用程序
首先,我们需要使用以下任意命令创建 Nuxt 应用程序:
yarn create nuxt-app nuxt-chat-app
// OR
npx create-nuxt-app nuxt-chat-app
// OR
npm init nuxt-app nuxt-chat-app
第 2 步 - 创建 Robin 帐户
现在我们的应用程序已经准备好了,我们需要有一个 Robin 帐户才能使用它。前往Robin 的注册页面创建一个 30 天的免费试用帐户。
Robin 会在您创建帐户后 7 天通知您,您可以在账单日期之前移除您的卡。
填写注册表单后,您将被重定向到结算页面以填写您的卡信息。在它重定向您的下一页上,Robin 请求您要创建的应用程序的名称及其身份验证类型。随意使用您选择的任何名称和任何一个身份验证选项。
第 3 步 - 获取您的 Robin 凭证
现在我们已经在 Robin 仪表板上创建了一个应用程序,您应该注意一些事情。在 Nuxt 应用程序中使用 Robin 时,您需要几个凭据:
让我们分别回顾一下它们。
keys: {
userToken: 'user_token',
profileImage: 'profile_image',
userName: 'user_name'
}
然后我们的users
数组应该用对象中的值来描述用户的令牌、个人资料图像和名称keys
。
无论将使用您的 Robin 应用程序的用户如何,Robin 都需要来自他们的 auserToken
和profileImage
a 。userName
Robin 需要此显示名称并在平台上唯一标识每个消息发送者和接收者。
users: [
{
'user_token': 'ABCDEF098765GH',
'profile_image': 'https://url-to-image',
'user_name': 'Article Reader'
}
]
第 4 步 – 在您的 Nuxt 应用程序中安装 Robin
由于我们拥有所需的一切,我们可以继续安装 Robin。
npm i robin-vue
// OR
yarn add robin-vue
第 5 步 - 设置 Robin 插件
在您的目录中,使用插件设置plugins
创建一个文件:robin.js
import Vue from 'vue'
import RobinChat from 'robin-vue'
import 'robin-vue/dist/style.css'
Vue.use(RobinChat)
请注意,我们导入 CSS 是因为RobinChat
组件本身不包含任何 CSS。
第 6 步 – 注册插件
文件中的plugins
属性nuxt.config.js
是让我们的 Nuxt 应用知道它应该使用的插件。所以如果我们不在那里包含我们的 Robin 插件,它在我们的应用程序中将不可用。
export default {
// ...
plugins: [
{ src: '~/plugins/robin.js', mode: 'client' }
]
}
第 7 步 – 使用插件
现在剩下的就是让我们将RobinChat
组件包含在应用程序的任何位置,并将我们之前讨论过的那些凭据作为道具传递。
再一次,凭据是:
在这个列表中,我们目前没有的是我们的用户令牌和我们应用程序上用户的令牌。
回想一下,这些令牌通常是在服务器上创建的。但我们没有这样的奢侈。所以我们可以在Robin 的 JavaScript SDK的帮助下继续创建它们。我们之前安装的 Vue SDK 依赖于这个 JavaScript SDK。所以我们不需要安装它,因为它已经存在于我们的应用程序中。
我们可以继续在我们将包含聊天 UI 的页面中创建令牌。因为这是出于学习目的,我们可以继续为 5 个用户(包括我们自己)创建代币。我们需要为每个人提供用户名。
<template>
<!-- ... -->
</template>
<script>
export default {
data () {
return {
users: [
{
user_token: '',
profile_image: '',
user_name: 'idorenyin'
},
{
user_token: '',
profile_image: '',
user_name: 'ayo'
},
{
user_token: '',
profile_image: '',
user_name: 'elvis'
},
{
user_token: '',
profile_image: '',
user_name: 'favour'
},
{
user_token: '',
profile_image: '',
user_name: 'enoch'
}
],
}
}
}
</script>
请注意,users
数组中每个用户对象中的键都必须在keys
我们将作为道具传递给 Robin 组件的对象中定义。
keys: {
userToken: 'user_token',
profileImage: 'profile_image',
userName: 'user_name'
},
接下来,我们使用 SDK 的createUserToken()
函数在创建 Robin 实例后创建令牌,如Robin 的文档中所述。
<template>
<!-- ... -->
</template>
<script>
import { Robin } from 'robin.io-js'
export default {
data () {
return {
keys: {
userToken: 'user_token',
profileImage: 'profile_image',
userName: 'user_name'
},
users: [
// ...
]
}
},
created () {
this.createTokens()
},
methods: {
async createTokens () {
const robin = new Robin('API_KEY', true)
for (let i = 0; i < this.users.length; i++) {
await robin.createUserToken({
meta_data: {
username: this.users[i].user_name
}
}).then((res) => {
this.users[i].user_token = res.data.user_token
})
}
}
}
}
</script>
我们现在拥有在我们的应用程序上显示 Robin 聊天 UI 所需的一切。哇!
我们现在可以继续使用令牌和其他凭据。
<template>
<!-- ... -->
<RobinChat
v-if="tokensAreAvailable"
:api-key="apiKey"
:user-token="users[0].user_token"
user-name="Idorenyin Udoh"
:keys="keys"
:users="users"
/>
</template>
<script>
import { Robin } from 'robin.io-js'
export default {
data () {
return {
tokensAreAvailable: false,
apiKey: 'API_KEY',
keys: {
userToken: 'user_token',
profileImage: 'profile_image',
userName: 'user_name'
},
users: [
{
user_token: '',
profile_image: '',
user_name: 'idorenyin'
},
{
user_token: '',
profile_image: '',
user_name: 'ayo'
},
{
user_token: '',
profile_image: '',
user_name: 'elvis'
},
{
user_token: '',
profile_image: '',
user_name: 'favour'
},
{
user_token: '',
profile_image: '',
user_name: 'enoch'
}
]
}
},
created () {
this.createTokens()
},
methods: {
async createTokens () {
const robin = new Robin(this.apiKey, true)
for (let i = 0; i < this.users.length; i++) {
await robin.createUserToken({
meta_data: {
username: this.users[i].user_name
}
}).then((res) => {
this.users[i].user_token = res.data.user_token
})
}
this.tokensAreAvailable = true
}
}
}
</script>
请注意,我们仅RobinChat
在所有用户的令牌都可用时才显示该组件以避免错误。
结果如下所示:
该应用程序可在此处获得。
请注意,我为此应用程序使用了先前创建的用户令牌,因为如果每次加载应用程序时都创建令牌,您将无法查看消息。永久令牌是使 Robin 上的消息持续存在的原因。
另外,我为用户 Ayo创建了另一个应用程序。你也可以检查一下。这样,您可以测试 Idorenyin 和 Ayo 之间的实时通信。
结论
您刚刚学习了如何使用 Robin 在 Nuxt 应用程序上实现实时通信。
易于集成使得在您的应用程序中实现聊天系统并专注于构建/维护它的速度非常快。
如果您确保在服务器上创建用户的令牌,那么在前端实现集成不会太难。
建设愉快!
来源:https ://www.freecodecamp.org/news/create-a-real-time-chat-application-with-nuxt/
1660264200
在实时聊天应用程序中,收件人几乎可以立即查看发件人的消息。这可以是两方之间的一对一对话,也可以是小组对话。
这就是我们将在本教程中构建的内容。对于这个应用程序,我们将使用直观的 Vue 框架Nuxt。
现在我们知道我们将要构建什么以及我们将使用的技术,让我们回顾一下我们将使用的聊天 API。
在本文中,我们将使用Robin,因为它的 UI 极少,而且它很容易集成到我们的应用程序中。有了这个,让我们开始吧。
第 1 步 - 创建 Nuxt 应用程序
首先,我们需要使用以下任意命令创建 Nuxt 应用程序:
yarn create nuxt-app nuxt-chat-app
// OR
npx create-nuxt-app nuxt-chat-app
// OR
npm init nuxt-app nuxt-chat-app
第 2 步 - 创建 Robin 帐户
现在我们的应用程序已经准备好了,我们需要有一个 Robin 帐户才能使用它。前往Robin 的注册页面创建一个 30 天的免费试用帐户。
Robin 会在您创建帐户后 7 天通知您,您可以在账单日期之前移除您的卡。
填写注册表单后,您将被重定向到结算页面以填写您的卡信息。在它重定向您的下一页上,Robin 请求您要创建的应用程序的名称及其身份验证类型。随意使用您选择的任何名称和任何一个身份验证选项。
第 3 步 - 获取您的 Robin 凭证
现在我们已经在 Robin 仪表板上创建了一个应用程序,您应该注意一些事情。在 Nuxt 应用程序中使用 Robin 时,您需要几个凭据:
让我们分别回顾一下它们。
keys: {
userToken: 'user_token',
profileImage: 'profile_image',
userName: 'user_name'
}
然后我们的users
数组应该用对象中的值来描述用户的令牌、个人资料图像和名称keys
。
无论将使用您的 Robin 应用程序的用户如何,Robin 都需要来自他们的 auserToken
和profileImage
a 。userName
Robin 需要此显示名称并在平台上唯一标识每个消息发送者和接收者。
users: [
{
'user_token': 'ABCDEF098765GH',
'profile_image': 'https://url-to-image',
'user_name': 'Article Reader'
}
]
第 4 步 – 在您的 Nuxt 应用程序中安装 Robin
由于我们拥有所需的一切,我们可以继续安装 Robin。
npm i robin-vue
// OR
yarn add robin-vue
第 5 步 - 设置 Robin 插件
在您的目录中,使用插件设置plugins
创建一个文件:robin.js
import Vue from 'vue'
import RobinChat from 'robin-vue'
import 'robin-vue/dist/style.css'
Vue.use(RobinChat)
请注意,我们导入 CSS 是因为RobinChat
组件本身不包含任何 CSS。
第 6 步 – 注册插件
文件中的plugins
属性nuxt.config.js
是让我们的 Nuxt 应用知道它应该使用的插件。所以如果我们不在那里包含我们的 Robin 插件,它在我们的应用程序中将不可用。
export default {
// ...
plugins: [
{ src: '~/plugins/robin.js', mode: 'client' }
]
}
第 7 步 – 使用插件
现在剩下的就是让我们将RobinChat
组件包含在应用程序的任何位置,并将我们之前讨论过的那些凭据作为道具传递。
再一次,凭据是:
在这个列表中,我们目前没有的是我们的用户令牌和我们应用程序上用户的令牌。
回想一下,这些令牌通常是在服务器上创建的。但我们没有这样的奢侈。所以我们可以在Robin 的 JavaScript SDK的帮助下继续创建它们。我们之前安装的 Vue SDK 依赖于这个 JavaScript SDK。所以我们不需要安装它,因为它已经存在于我们的应用程序中。
我们可以继续在我们将包含聊天 UI 的页面中创建令牌。因为这是出于学习目的,我们可以继续为 5 个用户(包括我们自己)创建代币。我们需要为每个人提供用户名。
<template>
<!-- ... -->
</template>
<script>
export default {
data () {
return {
users: [
{
user_token: '',
profile_image: '',
user_name: 'idorenyin'
},
{
user_token: '',
profile_image: '',
user_name: 'ayo'
},
{
user_token: '',
profile_image: '',
user_name: 'elvis'
},
{
user_token: '',
profile_image: '',
user_name: 'favour'
},
{
user_token: '',
profile_image: '',
user_name: 'enoch'
}
],
}
}
}
</script>
请注意,users
数组中每个用户对象中的键都必须在keys
我们将作为道具传递给 Robin 组件的对象中定义。
keys: {
userToken: 'user_token',
profileImage: 'profile_image',
userName: 'user_name'
},
接下来,我们使用 SDK 的createUserToken()
函数在创建 Robin 实例后创建令牌,如Robin 的文档中所述。
<template>
<!-- ... -->
</template>
<script>
import { Robin } from 'robin.io-js'
export default {
data () {
return {
keys: {
userToken: 'user_token',
profileImage: 'profile_image',
userName: 'user_name'
},
users: [
// ...
]
}
},
created () {
this.createTokens()
},
methods: {
async createTokens () {
const robin = new Robin('API_KEY', true)
for (let i = 0; i < this.users.length; i++) {
await robin.createUserToken({
meta_data: {
username: this.users[i].user_name
}
}).then((res) => {
this.users[i].user_token = res.data.user_token
})
}
}
}
}
</script>
我们现在拥有在我们的应用程序上显示 Robin 聊天 UI 所需的一切。哇!
我们现在可以继续使用令牌和其他凭据。
<template>
<!-- ... -->
<RobinChat
v-if="tokensAreAvailable"
:api-key="apiKey"
:user-token="users[0].user_token"
user-name="Idorenyin Udoh"
:keys="keys"
:users="users"
/>
</template>
<script>
import { Robin } from 'robin.io-js'
export default {
data () {
return {
tokensAreAvailable: false,
apiKey: 'API_KEY',
keys: {
userToken: 'user_token',
profileImage: 'profile_image',
userName: 'user_name'
},
users: [
{
user_token: '',
profile_image: '',
user_name: 'idorenyin'
},
{
user_token: '',
profile_image: '',
user_name: 'ayo'
},
{
user_token: '',
profile_image: '',
user_name: 'elvis'
},
{
user_token: '',
profile_image: '',
user_name: 'favour'
},
{
user_token: '',
profile_image: '',
user_name: 'enoch'
}
]
}
},
created () {
this.createTokens()
},
methods: {
async createTokens () {
const robin = new Robin(this.apiKey, true)
for (let i = 0; i < this.users.length; i++) {
await robin.createUserToken({
meta_data: {
username: this.users[i].user_name
}
}).then((res) => {
this.users[i].user_token = res.data.user_token
})
}
this.tokensAreAvailable = true
}
}
}
</script>
请注意,我们仅RobinChat
在所有用户的令牌都可用时才显示该组件以避免错误。
结果如下所示:
该应用程序可在此处获得。
请注意,我为此应用程序使用了先前创建的用户令牌,因为如果每次加载应用程序时都创建令牌,您将无法查看消息。永久令牌是使 Robin 上的消息持续存在的原因。
另外,我为用户 Ayo创建了另一个应用程序。你也可以检查一下。这样,您可以测试 Idorenyin 和 Ayo 之间的实时通信。
结论
您刚刚学习了如何使用 Robin 在 Nuxt 应用程序上实现实时通信。
易于集成使得在您的应用程序中实现聊天系统并专注于构建/维护它的速度非常快。
如果您确保在服务器上创建用户的令牌,那么在前端实现集成不会太难。
建设愉快!
来源:https ://www.freecodecamp.org/news/create-a-real-time-chat-application-with-nuxt/
1615818017
In this tutorial we’ll take a lok at Nuxt.js and Vite. This will create a super fast Nuxt server, with half a second reload times! Vue.js has never been faster!
#nuxt #vite #nuxt #vue
1590512499
Nuxt.js Content is a Git-based Headless CMS that allows you to fetch Markdown, JSON, YAML and CSV! in this video we look at how easy it is to setup. We also look at Nuxt auto-import components!
#nuxt #nuxt.js
1589905200
With the increasing popularity of Nuxt.js the core team and authors have not been sitting still. In February Sebastien will talk about the progression and plans for Nuxt.js in 2020.
Youtube channel: Vuejs Amsterdam - https://www.youtube.com/watch?v=9CkfX6LgNUU
#nuxt #nuxt.js
1590238260
With the increasing popularity of Nuxt.js the core team and authors have not been sitting still. In February Sebastien will talk about the progression and plans for Nuxt.js in 2020.
#nuxt #nuxt.js