# socket.xu

> 封装一个socket插件玩

Latest version **1.0.0** (published 2018-01-21) · ISC license · 0 weekly downloads

## Install

```sh
npm install socket.xu
pnpm add socket.xu
yarn add socket.xu
bun add socket.xu
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0 |
| Published | 2018-01-21 |
| First published | 2018-01-21 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | 1131029395@qq.com |
| Maintainers | xujiazheng |
| Keywords | socket, socket.xu, xu socket |

## Links

- npm: https://www.npmjs.com/package/socket.xu
- npm.io page: https://npm.io/package/socket.xu

## Alternatives

- [@opentelemetry/exporter-zipkin](https://npm.io/package/@opentelemetry/exporter-zipkin.md) — 14.8M weekly downloads
- [pusher-js](https://npm.io/package/pusher-js.md) — 2.0M weekly downloads
- [browserify](https://npm.io/package/browserify.md) — 1.7M weekly downloads
- [sqs-consumer](https://npm.io/package/sqs-consumer.md) — 1.7M weekly downloads
- [@sanity/eventsource](https://npm.io/package/@sanity/eventsource.md) — 930.8K weekly downloads

## Recent versions

- 1.0.0 (latest) — 2018-01-21

## README

# socket.xu
封装一个socket插件玩

## 服务端
```javascript

const ws = new WebSocketServer({port: 8888});

ws.defineUtil((connCaches) => {
    return {
        getAllUser() {
            return Object.values(connCaches).map(connObj => connObj.user);
        }
    }
})

ws.onconnection((socket, utils) => {
    // 登录事件
    socket.$on('login', (data) => {

        if (utils.checkLogin(data.user)) {
            socket.$emit('login result', {
                success: false,
                message: '用户名已存在，请更换'
            });
        } else {
            utils.login(socket, data.user, () => {
                socket.$emit('login result', {
                    success: true,
                    message: '登陆成功',
                    historyMessage: utils.getHistoryMessage(),
                });
                ws.$broadcast('online update', {
                    onlineUsers: utils.getAllUser()
                })
            })
        }
    });
    // 聊天事件
    socket.$on('message', (data) => {
        ws.$broadcast('new message', data);
    });
    // 注销事件
    ws.ondisconection((data) => {
        ws.$broadcast('user leave', {
            user: data.user
        });
        ws.$broadcast('online update', {
            onlineUsers: utils.getAllUser()
        });
    });
});

```

## 前端
```javascript
var ws = new MyWebsocket(`ws://${location.hostname}:8888`);
ws.on('login result', (data) => {
    if (data.success) {
        this.currentUser = this.user;
        this.messageArr = data.historyMessage;
        this.$nextTick(()=> {
            this.setChatArea();
        });
    } else {
        this.user = '';
        alert(data.message);
    }
});

ws.on('new message', (data) => {
    this.messageArr.push({
        user: data.user,
        message: data.message
    });
    this.$nextTick(()=> {
        this.setChatArea();
    });
    
});
ws.on('online update', (data) => {
    this.onlineUsers = data.onlineUsers;
})


ws.$emit('message', {
    user: this.currentUser,
    message: chatMessage
});
```

> 示例代码如上

---
_Source: https://npm.io/package/socket.xu · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
