之前我在论坛里找到了关于websocket通信的例子,里面有关于复制粘贴的部分的代码,
- function onCommandExecute(args) {
- if (!args.command) {
- return
- }
- if (!args.command.cmd) {
- return
- }
- spread.undoManager().clear()
- switch (args.command.cmd) {
- // 不向其他客户端同步的command类型写在这里
- case 'zoom':
- return
- default:
- break
- }
- console.log('args', args.command);
- let sendMsg = {
- type: 'direct_execute',
- sheetName: search.gridKey,
- data: args.command,
- sheetIndex: sheetIndexRef.current,
- }
- if (args.command.cmd === "clipboardPaste") {
- //查看是否过界
- const pastedRange = args.command.pastedRanges[0]
- const addRowCount = pastedRange.row + pastedRange.rowCount - totalRef.current
- if (addRowCount > 0) {
- sendMsg = {
- ...sendMsg,
- batch_row_start: totalRef.current + 1,
- batch_row_end: pastedRange.row + pastedRange.rowCount - 1
- }
- }
- }
- const jsonMsg = JSON.stringify(sendMsg)
- console.log('jsonMsg', blob, jsonMsg, jsonMsg.length)
- !isEmpty(ws) && ws.send(jsonMsg)
- }
复制代码 问题就在于这个args.command这个内容特别的大,是不是会把当前的内容,包括html,样式 全部都要传输过去吗?每次辅助一点点内容,上来就是好几mb,我这里的websocket立马就断了,我就想问问是不是一定得全部都传,能不能做点优化?还是我的代码问题,我看 在什么数据都没有的情况下,随便复制粘贴一下,其实也有个几百kb呢
|