微信小程序 +nodejs+socket.io

peitali 2016-11-24 11:20:14
服务器是windows+server2003
微信小程序必须要wss协议
nodejs服务端


var fs = require( 'fs' );
var app = require('express')();
var https = require('https');
app.use(function(req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Credentials', true);
res.setHeader('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS');
next();
});

var server = https.createServer({

key: fs.readFileSync('./3_seacore.cn.key'),
cert: fs.readFileSync('./2_seacore.cn.crt'),
ca: fs.readFileSync('./1_root_bundle.crt'),
requestCert: false,
rejectUnauthorized: true
},app);
server.listen(8080);

var io = require('socket.io').listen(server);
io.sockets.on('connection',function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('hhhh', function (data) {
console.log(data);
});
});


用其他浏览器可以正常访问和使用socket,但是用微信小程序调试就不行,


这是小程序代码

Page({
onLoad:function(){
wx.connectSocket({
url: "wss://seacore.cn:8080",
success:function(r){
console.log("ok")
},
fail:function(r){
console.log("fail")
},complete:function(r){
console.log("complete")
}
})
wx.onSocketOpen(function(res) {
console.log("websocket连接已打开")
wx.sendSocketMessage({
data: 'hhhh:'+Math.round(Math.random()*0xFFFFFF).toString()
})
})

wx.onSocketMessage(function(data) {
console.log('收到服务器内容:'+data)
})
wx.onSocketClose(function() {
console.log("websocket连接已关闭")
})
wx.onSocketError(function(res){
console.log('WebSocket连接打开失败,请检查!')
})
}
})







这个问题搞了很久,求大神帮助
...全文
3534 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_27294663 2018-01-12
  • 打赏
  • 举报
回复
这个不能 用 wx.connectSocket 你要用socket.io
  app.globalData.socket.emit('add user', app.globalData.userInfo.nickName)
    console.log('user2--->', app.globalData.userInfo)
    const socket = app.globalData.socket
    socket.on('login', function (msg) {
      console.log(msg)
 //做点什么
     
     
    })
qq_27294663 2018-01-12
  • 打赏
  • 举报
回复
我也刚实现这个功能
qq_21390183 2018-01-11
  • 打赏
  • 举报
回复
var https=require('https'); var ws=require('ws'); var fs=require('fs'); var keypath='/etc/nginx/cert/43545345.key'; var certpath='/etc/nginx/cert/43545345.pem'; var users = {} var data = {} var options = { key: fs.readFileSync(keypath), cert: fs.readFileSync(certpath), }; var server=https.createServer(options, function (req, res) {//要是单纯的https连接的话就会返回这个东西 res.writeHead(403);//403即可 res.end("This is a WebSockets server!\n"); }).listen(12348); var wss = new ws.Server( { 'server': server } );//把创建好的https服务器丢进websocket的创建函数里,ws会用这个服务器来创建wss服务 //同样,如果丢进去的是个http服务的话那么创建出来的还是无加密的ws服务 wss.on( 'connection', function connection(wsConnect, req) { var uid = req.headers['uid']; var id = wsConnect._ultron.id; users[uid] = id; data[id] = uid; console.log(users, data) wsConnect.on('message', function incoming(message) { console.log('received: %s', message); }); wss.clients.forEach(function each(client) { // if (client._ultron.id == 1){ client.send(data[client._ultron.id]) // } else { // client.send('多来一个娃') // } }); });
cuihu811371804 2017-07-20
  • 打赏
  • 举报
回复
socket.io基于http,而微信小程序基于h5 ,换个ws库
u013032924 2017-05-27
  • 打赏
  • 举报
回复
问题已经解决 如果有人 遇到了 相同的问题 可以加我QQ
u013032924 2017-05-23
  • 打赏
  • 举报
回复
你好 请问在吗 我想知道你的这篇帖子是否已经有了答案 如果方便的话 能否告知我一下 我现在也是卡在了与你相同的地方 谢谢了 QQ676114734

3,143

社区成员

发帖
与我相关
我的任务
社区描述
微信开发即微信公众平台开发,将企业信息、服务、活动等内容通过微信网页的方式进行表现,通过二次开发可以将公众账号由一个媒体型营销工具转化成提供服务的产品。
社区管理员
  • 微信开发
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧