问题描述
例:发送登录请求后及时获取返回值,然后根据返回值处理接下来的事件,类似http请求,不过需求是要用websocket做到这一点。
我们在websocket 介绍上能够充分认知到websocket的所有回调函数都是异步执行的,也就是说我发送send(msg)之后我要读取信息是在onmessage()里面读取,这显然不符合我们的要求。
我想要这样的效果
ws.send('',(res)=>{
//res为send的返回值(类似于response)
})
例:发送登录请求后及时获取返回值,然后根据返回值处理接下来的事件,类似http请求,不过需求是要用websocket做到这一点。
我们在websocket 介绍上能够充分认知到websocket的所有回调函数都是异步执行的,也就是说我发送send(msg)之后我要读取信息是在onmessage()里面读取,这显然不符合我们的要求。
我想要这样的效果
ws.send('',(res)=>{
//res为send的返回值(类似于response)
})
这个问题的问题在于
client
发送请求,server
必须有个响应与之对应,则你根本不需要websocket
,或者这部分用http
,其他部分用websocket
。client
和server
双向发送数据,则根本不能保证send
后面接的就一定是你希望服务端返回的结果,你是send
了server
可能压根就还没收到。这不是一个实现的问题,这是一个设计的问题。
// 创建websocket
ws = new WebSocket("ws://xxx:xxx");
// 当socket连接打开时,输入用户名
ws.onopen = onopen;
// 当有消息时根据消息类型显示不同信息
ws.onmessage = onmessage;
ws.onclose = function() {
console.log("连接关闭,定时重连");
connect();
};
ws.onerror = function() {
console.log("出现错误");
};
有一个一开始发送一条消息的方法。
ws.onopen
当然这个可能还是不能解决你的问题。不过 下面是一个 PHP聊天室框架 的例子。js 部分还是可以参考的。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
只能简单的给你看一下,因为公司防护系统原因不能复制代码,只能截图给你看看,我是封装了一套自己业务系统的websocket服务