//连接socketio let socket = io('http://localhost:3000'); /* 登录功能 */ //选择头像,在li上注册一个点击事件,加now类 addClass:添加一个类 siblings:移除其他li上的类 $('#login_avatar li').on('click', function () { $(this).addClass('now').siblings().removeClass('now'); }); //点击按钮登录 $('#loginBtn').on('click',function () { //获取用户名,去空格 let username = $('#username').val().trim(); if (!username) { alert('请输入用户名'); return } //获取头像 li.now表选中的li attr('src')拿到头像具体路径 let avatar = $('#login_avatar li.now img').attr('src'); //和服务器通信,把用户名和头像传输到服务器 socket.emit('login',{ username: username, avatar: avatar }); }); //监听登录失败的请求 socket.on('loginError',data=>{ alert('登录失败,用户名已经存在'); }); //监听登录成功的请求 socket.on('loginSuccess',data=>{ alert('登录成功'); });
时间: 2024-01-11 07:04:02 浏览: 23
这段代码是前端部分,用于实现聊天室的登录功能。它使用Socket.io来连接到服务器,并通过Socket.io的`emit`方法向服务器发送登录请求。
首先,使用`io`函数创建一个Socket.io实例,并传入服务器的URL作为参数。
接下来,定义了一个点击事件处理程序,当用户点击头像时,会在当前`li`元素上添加一个`now`类,并移除其他`li`元素上的`now`类。这样可以实现选择头像的功能。
然后,定义了一个点击事件处理程序,当用户点击登录按钮时,会执行该处理程序。首先获取输入框中的用户名,并去除首尾的空格。如果用户名为空,则弹出提示框并返回。接着,获取选中头像的路径。最后,使用`socket.emit`方法向服务器发送一个名为"login"的事件,并传递用户名和头像作为数据。
接着,使用`socket.on`方法监听来自服务器的"loginError"事件,并在回调函数中弹出提示框,显示登录失败的消息。
最后,使用`socket.on`方法监听来自服务器的"loginSuccess"事件,并在回调函数中弹出提示框,显示登录成功的消息。
这段代码实现了聊天室的登录功能,并与服务器进行了交互。根据服务器的响应,可以弹出不同的提示框显示登录成功或失败的消息。
相关问题
socket.io使用
引用中提到了socket.io是一个库,用于实时通信,可以在前端和后端之间建立连接,并获取实时状态和下指令。在前端使用socket.io时,需要引入socket.io-client库,并通过io.connect方法建立与服务端的连接。例如,在前端中可以使用以下代码建立连接:
import { io } from "socket.io-client";
let socket = io.connect("http://localhost:3000/");
其中,http://localhost:3000/是服务端的地址。连接成功后,可以监听各个事件的使用。例如,通过socket.on方法监听"connect"事件,判断连接是否成功;使用socket.on方法监听"disconnect"事件,捕获连接异常中断;还可以监听其他自定义事件,例如"message_event"事件,用于接收后台发送的消息。
需要注意的是,通过socket.close()或socket.disconnect()方法可以在前端主动断开与服务端的连接。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [实时通信Socket.io的使用](https://blog.csdn.net/weixin_44690156/article/details/127684237)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* [Socket.io 的使用](https://blog.csdn.net/wzxzRoad/article/details/125079935)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
uniapp socket.io-client
uniapp中的socket.io-client是一个插件,可以帮助开发者在uniapp应用程序中添加websocket支持,并具有心跳特性及重连功能。使用该插件可以方便地实现APP和小程序与服务器之间的实时通信。
以下是使用socket.io-client插件的步骤:
1.在uniapp项目中安装socket.io-client插件。可以通过HBuilderX的插件市场或者npm安装。
2.在需要使用websocket的页面中引入socket.io-client插件。
```javascript
import io from '@/js_sdk/socket.io-client/socket.io.js'
```
3.创建socket连接并监听事件。
```javascript
let socket = io('ws://localhost:3000')
socket.on('connect', () => {
console.log('连接成功')
})
socket.on('message', (data) => {
console.log('收到消息:', data)
})
```
4.发送消息。
```javascript
socket.emit('message', 'hello')
```
以上是使用socket.io-client插件实现uniapp中websocket的基本操作。需要注意的是,插件默认使用的是socket.io协议,如果需要使用原生WebSocket协议,可以参考引用中的方法。