【发布时间】:2018-07-20 09:58:48
【问题描述】:
我已经使用以下代码启动并运行了一个 node/express/ws 服务器
'use strict';
var http = require('http');
var https = require('https');
var fs= require('fs');
var express = require('express');
var WebSocket = require('ws');
var server = {
cert: fs.readFileSync('../ssl/wss/new/certificate.pem'),
key: fs.readFileSync('../ssl/wss/new/private.pem'),
ca: fs.readFileSync('../ssl/wss/new/ca_bundle.pem'),
rejectUnauthorized: false
};
var web = express();
//Server initializations
var httpServer = http.createServer(web);
var httpsServer = https.createServer(server, web);
var wss = new WebSocket.Server({ server: httpsServer });
httpServer.listen(8080);
httpsServer.listen(58443, function listen(connection) {});
我有以下内容可以监听客户端发送的事件
wss.broadcast = function broadcast(data) {
wss.clients.forEach(function each(client) {
if (client.readyState === WebSocket.OPEN) {
client.send(data);
}
});
};
wss.on('connection', function connection(ws) {
ws.on('message', function incoming(data) {
if(JSON.parse(data)) {
data = JSON.parse(data+'\n');
if(data.proto == "SN_NOTI") { //Want to send to everyone that's not the sender.
var mes = {
type: 'NOTI',
title: data.title,
body: data.body
}
wss.broadcast(JSON.stringify(mes));
} else if (data.proto == "UP_NOTI") { //Send to everyone, including sender
var msg = {type: "UP_NOTI"}
wss.broadcast(JSON.stringify(msg));
} else if (data.proto == "msg") {
console.log(data.value);
}
} else {
console.log("Had some trouble.");
}
});
});
我要做的是向除发件人以外的所有其他客户端发送消息var = mes { type: "NOTI", ... }(因为发件人不需要浏览器通知)。
【问题讨论】:
-
查看
socket.braodcast -
有一个错字,
socket.broadcast是:p -
我尝试过使用 socket.io,虽然我不是粉丝,因此将其排除在外。
标签: javascript node.js express websocket