写了一个简单的demo,直接上代码吧。用的时候注意一下版本号,可能 socket.io 的 API 有修改~

效果图

index.html

<!DOCTYPE <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>websocket测试</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- <link rel="stylesheet" type="text/css" media="screen" href="main.css" /> -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.dev.js"></script>
<style>
* {margin:0; padding:0;}
html {background-color:#fff; }
#footer {border:0 solid #c3c3c3; position: fixed; height: 40px; width:98%; bottom:10px; left:1%; display:flex; flex:1; padgint:10px 0;}
.btn {background-color:#1AAD19; color:#fff; box-sizing:border-box; pading:0 1.32em; line-height:2.3; border-radius:5px; width:100px; display:inline-block; font-size:13px; text-align:center; text-decoration:none;height:40px;line-height:40px;font-size:16px;1}
.ipt {border:0; outline:0; background-color:transparent; font-size:17px; height:1.47em; line-height:1.47; width:100%; height:100%;} .ipt_container {display:flex; flex:1; border-top:1px solid #e5e5e5; border-bottom:1px solid #e5e5e5;} .btn_container {ymargin:0 10px;} #main {width:98%; height: 90%; margin:10px auto; display:block;}
#main textarea {border:1px solid #ddd; width:100%; height:100%; padding:5px; line-height:22px; font-size:14px;} /* .ipt_container:before {content:" "; position:absolute; top:0; left:0; height:1px; border-top:1px solid #e5e5e5; color:#e5e5e5;transform:scaleY(0.5); z-index:2; transform-origin:0 0;}
.ipt_container:after {content:" "; position:absolute; bottom:0; right:0; height:1px; border-bottom:1px solid #e5e5e5; color:#e5e5e5;transform:scaleY(0.5); z-index:2; transform-origin:0 100%;} */
</style>
</head>
<body> <div id="wrapper">
<div id="main">
<textarea readonly="readonly" id="txtConsole"></textarea>
</div>
<div id="footer">
<div class="ipt_container">
<input type='text' class="ipt" placeholder="请输入内容..." id="chatpIpt"/>
</div>
<div class="btn_container">
<a href="javascript:;" class="btn" onclick="sendMsgHandler();return false;">发送</a>
</div>
</div>
</div> <script type="text/javascript">
// common function
function getEl(id) {
return typeof(id) === 'string' ? document.getElementById(id) : null;
} // native code
// var websocket = new WebSocket('ws://127.0.0.1:8080/'); // websocket.addEventListener('error', function (evt) {
// console.log('websocket error.')
// }); // websocket.addEventListener('open', function (evt) {
// console.log('websocket open.')
// }); // websocket.addEventListener('message', function (evt) {
// console.log(evt.data);
// }); // websocket.addEventListener('close', function (evt) {
// console.log('websocket close.')
// }) // Create SocketIO instance, connect
var socket = io.connect('ws://localhost:8080'); // Add a connect listener
socket.on('connect', function() {
showMessage('Client has connected to the server!');
}); // Add a connect listener
socket.on('news', function(data) {
var str = 'Received data from server. data : ' + JSON.stringify(data);
showMessage(str);
}); // Add a disconnect listener
socket.on('disconnect', function() {
showMessage('The client has disconnected');
}); // Sends a message to the server via sockets
function sendMessageToServer(msgData) {
socket.emit('test_event', msgData);
} var delayScrollTimer = null;
function showMessage(str) {
var txt = getEl('txtConsole') txt.value = txt.value + '\n' + str; if (delayScrollTimer) {
clearTimeout(delayScrollTimer);
delayTimer = null;
} delayScrollTimer = setTimeout(function() {
txt.scrollTop = txt.scrollHeight;
}, 10);
} // test
function sendMsgHandler() {
var elem = getEl('chatpIpt'); var iptValue = elem.value; sendMessageToServer({data : iptValue}); elem.value = "";
elem.focus();
}
</script> </body>
</html>

socket_server.js

var app = require('http').createServer(handler)
var io = require('socket.io')(app);
var fs = require('fs'); app.listen(8080); function handler(req, res) {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end('<h1>Hello Socket Lover!</h1>');
} io.on('connection', function (socket) {
socket.emit('news', { data : 'server world' }); socket.on('test_event', function (data) {
console.log('receive data from client. data : ' + JSON.stringify(data)); var str = data.data + "(from server by " + new Date().getTime() + ")";
socket.emit('news', { data : str});
}); socket.on('disconnect', function () {
console.log('websocket close. -- server log');
}); // var num = 1;
// setInterval(function xx(params) {
// socket.emit('news', { num: num++});
// }, 1 * 1000);
});

socket.io的websocket示例的更多相关文章

  1. 用socket.io实现websocket的一个简单例子

    socket.io 是基于 webSocket 构建的跨浏览器的实时应用. 逛博客发现几个比较好的 一.用socket.io实现websocket的一个简单例子 http://biyeah.iteye ...

  2. Socket.IO – 基于 WebSocket 构建跨浏览器的实时应用

     Socket.IO 是一个功能非常强大的框架,能够帮助你构建基于 WebSocket 的跨浏览器的实时应用.支持主流浏览器,多种平台,多种传输模式,还可以集合 Exppress 框架构建各种功能复杂 ...

  3. 使用Node.js+Socket.IO搭建WebSocket实时应用

    Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. W ...

  4. (转)使用Node.js+Socket.IO搭建WebSocket实时应用

    Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. W ...

  5. 使用Node.js+Socket.IO搭建WebSocket实时应用【转载】

    原文:http://www.jianshu.com/p/d9b1273a93fd Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新 ...

  6. websocket与socket.io

    什么是Websocket? Websocket是一个独立于http的实时通信协议,最初是在HTML5中被引用进来的,在HTML5规范中作为浏览器与服务器的核心通信技术被嵌入到浏览器中.WebSocke ...

  7. websocket 与Socket.IO介绍

    一  websocket WebSocket是html5新增加的一种通信协议,目前流行的浏览器都支持这个协议,例如 Chrome,Safrie,Firefox,Opera,IE等等,对该协议支持最早的 ...

  8. .net , java webSocket 连接 Socket.io (1.4.4版本) 问题

    .net版Socketio4net类库和java版socket.io-java-client类库 连接socket.io 1.4版本都不行,网上大多是socket.io 0.9版本的,socket.i ...

  9. Websocket --socket.io的用法

    <!DOCTYPE html> <html> <head> <title>Hello WebSocket</title> <link ...

随机推荐

  1. tomcat优化,java查看

    java堆空间分为  新生代 ,老年代 , 持久代 各自有各自的垃圾回收算法 eden区:新生的对象存放在这经常被回收 from  .to  存活区 在老年代,回收的频率不是很高 jdk8 就没有持久 ...

  2. ip转城市接口,ip转省份接口,ip转城市PHP方法

    新浪接口(速度快) $url = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$ip; $arr ...

  3. Redis Pubsub命令用法

    一.什么是pub/sub及实现Pub/Sub功能(means Publish, Subscribe)即发布及订阅功能. Redis通过publish和subscribe命令实现订阅和发布的功能. 订阅 ...

  4. .net core cookie登录和session的 DataProtectionProvider 加入 redis

    string redisConnectionString = Configuration.GetSection("Storage:Redis").GetValue<strin ...

  5. P1010 幂次方 递归模拟

    题目描述 任何一个正整数都可以用22的幂次方表示.例如 137=2^7+2^3+2^0137=27+23+20 同时约定方次用括号来表示,即a^bab 可表示为a(b)a(b). 由此可知,13713 ...

  6. 【目录】《剑指Offer》Java实现

    如题: 1) 找出数组中重复的数字 2) 不修改数组找出重复的数字 3) 二维数组中的查找 4) 替换空格 5) 从尾到头打印链表 6) 重建二叉树 7) 二叉树的下一个结点 8) 用两个栈实现队列 ...

  7. TensorFlow图像预处理-函数

    更多的基本的API请参看TensorFlow中文社区:http://www.tensorfly.cn/tfdoc/api_docs/python/array_ops.html 下面是实验的代码,可以参 ...

  8. SpringBoot统一错误处理

    1.处理错误请求页面 import org.springframework.stereotype.Controller; import org.springframework.web.bind.ann ...

  9. scrapy meta不用pipe用命令-o

    1. spider代码: # -*- coding: utf-8 -*- import scrapy from tencent1.items import Tencent1Item import js ...

  10. HDU4578 Transformation【线段树】

    <题目链接> <转载于 >>> > 题目大意: 有一个序列,有四种操作: 1:区间[l,r]内的数全部加c. 2:区间[l,r]内的数全部乘c. 3:区间[l ...