小程序websocket调试模式下能打印出服务端回调的消息,不开调试模式打印不出。
后端代码如下,用的是nodejs搭建的wss服务器
const https = require('https');
const fs = require('fs');
var ws=require('ws');
var options = {
pfx: fs.readFileSync('我的域名.pfx'),
passphrase: '证书密码'
};
var server=https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('hello world\n');
}).listen(8081);
var wss = new ws.Server( { server: server} );//把创建好的https服务器丢进websocket的创建函数里,ws会用这个服务器来创建wss服务
//同样,如果丢进去的是个http服务的话那么创建出来的还是无加密的ws服务
wss.on( 'connection', function ( ws) {
ws.on( 'message', function ( msg ) {
console.log( msg );
ws.send(msg);
});
});
调试模式下如图,可以显示出callback
没有开调试模式如图
付上前端代码
var websocket = require('../../utils/websocket.js');
//获取应用实例
var app = getApp()
var message = '';
var text = '';
var user = {};
Page({
data: {
message : '',
text : text
},
bindChange: function(e) {
message = e.detail.value
},
//事件处理函数
add: function(e) {
websocket.send(user.nickName +" : "+ message);
},
onLoad: function () {
var that = this
//调用应用实例的方法获取全局数据
app.getUserInfo(function(userInfo){
user = userInfo;
websocket.connect(user, function(res) {
console.log(res)
text = res.data +"\n" + text;
that.setData({
text:text
});
})
})
}
})
前端wxml
<view>
<view class="sendmessage">
<input id="message" bindinput="bindChange"></input>
<button bindtap="add">发送</button>
</view>
</view>
<view class="historycon" >
<scroll-view scroll-y="true" class="history">
<text>{{text}}</text>
</scroll-view>
</view>