×

js socket通信

js socket通信(js建立简单socket)

admin admin 发表于2024-01-23 03:37:54 浏览38 评论0

抢沙发发表评论

本篇文章给大家谈谈js socket通信,以及js建立简单socket对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

本文目录

js建立简单socket

import Stomp from "stompjs"; import SockJS from "sockjs-client"; let stompClient = null; class Socket {   constructor(socketMsg) {     this.socketMsg = socketMsg;   }   /**   * 向服务器发起websocket连接并发送CONNECT帧   * @param {object} stompType 与服务器连接通道类型   * @param {function} callback 回调方法   */   static startConnect( callback) {     // 建立连接对象     const socket = new SockJS(’’连接地址);     // 获取 STOMP 子协议的客户端对象     stompClient = Stomp.over(socket);     // 请求头验证,需要登陆     const headers = {       userId: JSON.parse(sessionStorage.getItem("id"))     };     // stompClient.debug = () =》 {};     stompClient.connect(       headers,       (result) =》 {         console.log("开始连接",result)         // 订阅队列推送         stompClient.subscribe(’订阅1队列地址’, res =》 {           // 收到推送内容           callback(data);         });         // 订阅被邀请         stompClient.subscribe(’订阅2地址’, res =》 {           callback(data);         });       },       () =》 {         // console.log(err);       }     );   }   // 主动发送消息   static send(data) {     stompClient.send(data.url, headers, data.sendMsg);   }   // 断开连接   static disconnect() {     stompClient.disconnect(() =》 {       // console.log("连接关闭");     });   } } export default Socket;

js socket怎么实现

  1. 前提:你要有socket服务程序,如果服务器上没socket服务,你是没法使用socket服务的。可以通过PHP、nodejs等开发socket服务

  2. new 一个 WebSocket对象

  3. 打开端口

  4. 发送数据

如何使用Node.js的socket模块和硬件设备通讯

node作为一个通讯服务端,同时提供TCP服务(socket)和HTTP服务(socket.io),你只要将和设备的连接以某个唯一的值保持起来就可以。你在web界面做一个操作的时候,在页面上通过socket.io向服务端emit一个事件并附带数据,然后服务端再根据唯一标识找到对应这个设备的socket连接,向那边写数据,前提是你socket通讯有自己约定的协议,或者使用国标之类的,这样才能识别指令。

nodejs 怎么和exe进行socket通信

完成 Sever --》 Client 的单向通讯。 view plain copy // Sever --》 Client 的单向通讯 var net = require(’net’); var chatServer = net.createServer(); chatServer.on(’connection’, function(client) { client.write(’Hi!\n’); // 服务端向客户端输出信息,使用 write() 方法 client.write(’Bye!\n’); client.end(); // 服务端结束该次会话 }); chatServer.listen(9000); 客户端可以是系统自带的 Telnet: view plain copy telnet 127.0.0.1 9000 执行 telnet 后,与服务点连接,反馈 Hi! Bye! 的字符,并立刻结束服务端程序终止连接。如果我们要服务端接到到客户端的信息?可以监听 server.data 事件并且不要中止连接(否则会立刻结束无法接受来自客户端的消息): view plain copy // 在前者的基础上,实现 Client --》 Sever 的通讯,如此一来便是双向通讯 var net = require(’net’); var chatServer = net.createServer(), clientList = ; chatServer.on(’connection’, function(client) { // JS 可以为对象自由添加属性。这里我们添加一个 name 的自定义属性,用于表示哪个客户端(客户端的地址+端口为依据) client.name = client.remoteAddress + ’:’ + client.remotePort; client.write(’Hi ’ + client.name + ’!\n’); clientList.push(client); client.on(’data’, function(data) { broadcast(data, client);// 接受来自客户端的信息 }); }); function broadcast(message, client) { for(var i=0;i《clientList.length;i+=1) { if(client !== clientList) { clientList.write(client.name + " says " + message); } } } chatServer.listen(9000); 这里要说明一下的是,不不同操作系统对端口范围的限制不一样,有可能是随机的。那么上面是不是一个完整功能的代码呢?我们说还有一个问题没有考虑进去:那就是一旦某个客户端退出,却仍保留在 clientList 里面,这明显是一个空指针(NullPoint)。如果是在这样的话我们写程序太脆弱了,能不能更健壮一些?——请接着看。首先我们简单地把 client 从数组 clientList 中移除掉。完成这工作一点都不困难。Node TCP API 已经为我们提供了 end 事件,即客户端中止与服务端连接的时候发生。移除 client 对象的代码如下: view plain copy chatServer.on(’connection’, function(client) { client.name = client.remoteAddress + ’:’ + client.remotePort client.write(’Hi ’ + client.name + ’!\n’); clientList.push(client) client.on(’data’, function(data) { broadcast(data, client) }) client.on(’end’, function() { clientList.splice(clientList.indexOf(client), 1); // 删除数组中的制定元素。这是 JS 基本功哦~ }) }) 但是我们还不敢说上述代码很健壮,因为一旦 end 没有被触发,异常仍然存在着。下面我们看看解决之道:重写 broadcast(): view plain copy function broadcast(message, client) { var cleanup = for(var i=0;i《clientList.length;i+=1) { if(client !== clientList) { if(clientList.writable) { // 先检查 sockets 是否可写 clientList.write(client.name + " says " + message) } else { cleanup.push(clientList) // 如果不可写,收集起来销毁。销毁之前要 Socket.destroy() 用 API 的方法销毁。 clientList.destroy() } } } //Remove dead Nodes out of write loop to avoid trashing loop index for(i=0;i《cleanup.length;i+=1) { clientList.splice(clientList.indexOf(cleanup), 1) } } TCP API 中还提供一个 error 事件,用于捕捉客户端的异常: view plain copy client.on(’error’, function(e) { console.log(e); }); Node 网络编程的 API 还丰富,此次仅仅是个入门,更多的内容请接着看,关于浏览器 Socket 应用。Socket.IO前面说到,浏览器虽然也属于客户端的一种,但仅支持“单工”的 HTTP 通讯。有见及此,HTML5 新规范中推出了基于浏览器的 WebSocket,开发了底层的接口,允许我们能进行 更强大的操作,超越以往的 XHR。如第一个例子那般,我们无须第三方框架就可以直接与 Node TCP 服务器 进行 Socket 通讯。***隐藏网址***WebSocketSocket over Flash APIXHR Polling 长连接XHR Multipart StreamingForever IframeJSONP Polling经过封装,我们可以不探究客户端使用上述哪一种技术达致“全双工”;而我们编写代码时,亦无论考虑哪种放法,因为 Socket.IO 给我们的 API 只有一套。了解 Socket.IO 其用法就可以了。先在浏览器部署 Socket.IO 的前端代码: view plain copy 《!DOCTYPE html》 《html》 《body》 《script src="/socket.io/socket.io.js"》《/script》 《script》 ***隐藏网址*** // 当服务端发送一条消息到客户端,message 事件即被触发。我们把消息在控制台打印出来 socket.on(’message’, function(data){ console.log(data) }) 《/script》 《/body》 《/html》 服务端 Node 代码: view plain copy ***隐藏网址***io = require(’socket.io’), fs = require(’fs’); // 虽然我们这里使用了同步的方法,那会阻塞 Node 的事件循环,但是这是合理的,因为 readFileSync() 在程序周期中只执行一次,而且更重要的是,同步方法能够避免异步方法所带来的“与 SocketIO 之间额外同步的问题”。当 HTML 文件读取完毕,而且服务器准备好之后,如此按照顺序去执行就能让客户端马上得到 HTML 内容。 var sockFile = fs.readFileSync(’socket.html’); ***隐藏网址******隐藏网址***server.on(’request’, function(req, res){ // 一般 HTTP 输出的格式 res.writeHead(200, {’content-type’: ’text/html’}); res.end(sockFile); }); server.listen(8080); var socket = io.listen(server); // 交由 Socket.io 接管 // Socket.io 真正的连接事件 socket.on(’connection’, function(client){ console.log(’Client connected’); client.send(’Welcome client ’ + client.sessionId); // 向客户端发送文本 }); 当客户端连接时,服务端会同时出发两个事件:server.onRequest 和 Socket.onConnection。它们之间有什么区别呢?区别在于 Socket 的是持久性的。多个 Socket 连接,先是客户端代码: view plain copy 《!DOCTYPE html》 《html》 《body》 《script src="/socket.io/socket.io.js"》《/script》 《script》 ***隐藏网址******隐藏网址*** upandrunning.on(’message’, function(data){ document.write(’《br /》《br /》Node: Up and Running Update《br /》’); document.write(data); }); weather.on(’message’, function(data){ document.write(’《br /》《br /》Weather Update《br /》’); document.write(data); }); 《/script》 《/body》 《/html》 服务端代码: view plain copy var sockFile = fs.readFileSync(’socket.html’); ***隐藏网址***server.on(’request’, function(req, res){ res.writeHead(200, {’content-type’: ’text/html’}); res.end(sockFile); }); server.listen(8080); var socket = io.listen(server); socket.of(’/upandrunning’) .on(’connection’, function(client){ console.log(’Client connected to Up and Running namespace.’); client.send("Welcome to ’Up and Running’"); }); socket.of(’/weather’) .on(’connection’, function(client){ console.log(’Client connected to Weather namespace.’); client.send("Welcome to ’Weather Updates’"); }); 如上代码,我们可以划分多个命名空间,分别是 upandrunning 和 weather。

js能否连接socket

aflax,有个已经封装好的js叫做socketJS原理就是利用flash,如果你的程序不考虑iphone用户,可以考虑这个解决方法***隐藏网址***可以下载一下,如果你有编程基础可以很快上手,下载不需要积分的

egg.js集成Socket.io实现推送和即时通信

一个基于 Node.js 的实时应用程序框架,在即时通讯、通知与消息推送,实时分析等场景中有较为广泛的应用 不知道怎么搭建egg项目的翻下以前的文章 到这里egg-socket.io已经开启并配置完毕了, 接下来我们就要编写路由和控制器了 到这里服务端完成, 下面我们来写一个简单的socket.io客户端 到这就结束了, 有问题留言!!!

关于js socket通信,js建立简单socket的介绍到此结束,希望对大家有所帮助。