expressClient.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="./js/jquery-1.3.1.min.js"></script>
<script src="./js/socket.io.js"></script>
<!-- 引入 Bootstrap -->
<link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script>
var iosocket=null;
$(function(){
iosocket = io.connect('http://localhost:9000/');
alert(iosocket);
iosocket.on('connect', function () {
iosocket.on('message', function(message) {
//alert('服务器传来:'+message);
myform.content.value += message;
myform.content.value += '<br/>';
});
iosocket.on('disconnect', function() {
alert('和服务器失去连接');
});
})
});
function say(){
var msg = myform.saytext.value;
iosocket.send(msg);
}
</script>
</head>
<body>
<form name='myform' style="margin-left:300px; margin-top:100px">
<!-- 导航栏 -->
<nav class="navbar navbar-default" role="navigation" style="width:730px">
<div class="container-fluid" >
<div class="navbar-header" >
<a class="navbar-brand" href="#" style="margin-left:300px">消息页面</a>
</div>
</div>
</nav>
<!-- 输入栏 -->
<textarea name='content' cols="100" rows="10" style="background-color:#dddddd;" disabled="disabled"></textarea><br/>
<!-- <input type='text' name='saytext' style="margin-top:40px"/> -->
<div style="margin-top:40px;margin-left:100px">
<div class="input-group">
<div style="width:400px">
<input type="text" name='saytext' class="form-control" placeholder="请输入消息"/>
</div>
<div style="margin-left:400px">
<button type="button" class="btn btn-success" value='say' onclick='say()'>发送</button>
</div>
</div>
</div>
<!-- <input type='button' value='say' onclick='say()'/> -->
</form>
</body>
</html>

expressSocketSever.js

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var fs= require('fs');

app.get('/', function(req, res){
fs.readFile('./expressClient.html', function(err, data) {
if(err) {
recall('文件不存在');
}else{
res.send(data.toString());
}
});
});
app.get('/js/jquery-1.3.1.min.js', function(req, res){
fs.readFile('./js/jquery-1.3.1.min.js', function(err, data) {
if(err) {
recall('文件不存在');
}else{
res.send(data.toString());
}
});
});
app.get('/js/socket.io.js', function(req, res){
fs.readFile('./js/socket.io.js', function(err, data) {
if(err) {
recall('文件不存在');
}else{
res.send(data.toString());
}
});
});

//----------Socket服务------------------------------
var ii=0;
var channel={};
io.on('connection', function(socket){
console.log('有人连上来了');
socket.ii=++ii;
channel[ii]=socket;
//监听新用户加入
socket.on('login', function(obj){
console.log(obj);
});
socket.on('disconnect', function(){
console.log(socket.ii+'离开了');
});
//监听用户发布聊天内容
socket.on('message', function(obj){
console.log(obj);
//socket.send(ii+'说:'+obj);
for(var key in channel){
channel[key].send(socket.ii+'说:'+obj);
}
});
})
//--------------------------------------------------

http.listen(9000, function(){
console.log('listening on *:9000');
});

socket消息发送的更多相关文章

  1. ZeroMQ接口函数之 :zmq_send – 在一个socket上发送一个消息帧

    ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-send zmq_send(3)              ØMQ Manual - ØMQ/4.1.0 Name ...

  2. ZeroMQ接口函数之 :zmq_sendmsg – 从一个socket上发送一个消息帧

    ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-sendmsg zmq_sendmsg(3)        ØMQ Manual - ØMQ/4.1.0 Name ...

  3. C# Socket异步实现消息发送--附带源码

    前言 看了一百遍,不如动手写一遍. Socket这块使用不是特别熟悉,之前实现是公司有对应源码改改能用. 但是不理解实现的过程和步骤,然后最近有时间自己写个demo实现看看,熟悉熟悉Socket. 网 ...

  4. ZeroMQ接口函数之 :zmq_send_const – 从一个socket上发送一个固定内存数据

    ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ——————————————————————————————————— ...

  5. twitter storm源码走读之2 -- tuple消息发送场景分析

    欢迎转载,转载请注明出处源自徽沪一郎.本文尝试分析tuple发送时的具体细节,本博的另一篇文章<bolt消息传递路径之源码解读>主要从消息接收方面来阐述问题,两篇文章互为补充. worke ...

  6. 高效的TCP消息发送组件

    目前的.net 架构下缺乏高效的TCP消息发送组件,而这种组件是构建高性能分布式应用所必需的.为此我结合多年的底层开发经验开发了一个.net 下的高效TCP消息发送组件.这个组件在异步发送时可以达到每 ...

  7. ActionScript接收socket服务器发送来的数据

    原文地址:http://www.asp119.com/news/2009522181815_1.htm 从socket中接收数据的方法取决于你使用socket类型,Socket和XMLSocket都可 ...

  8. ActiveMQ(2)---ActiveMQ原理分析之消息发送

    持久化消息和非持久化消息的发送策略 消息同步发送和异步发送 ActiveMQ支持同步.异步两种发送模式将消息发送到broker上.同步发送过程中,发送者发送一条消息会阻塞直到broker反馈一个确认消 ...

  9. NTCPMSG 开源高性能TCP消息发送组件

    https://www.cnblogs.com/eaglet/archive/2013/01/07/2849010.html 目前的.net 架构下缺乏高效的TCP消息发送组件,而这种组件是构建高性能 ...

随机推荐

  1. 深入浅出聊聊企业级API网关

    http://architect.dataguru.cn/article-11431-1.html API Gateway(API GW / API 网关),顾名思义,是出现在系统边界上的一个面向 A ...

  2. 回忆基础:制作plist文件

    -(void)creatPlistFileWithArr:(NSArray *)array{ //将字典保存到document文件->获取appdocument路径 NSString *docP ...

  3. DEV开发之界面皮肤

    最终效果:正文本人的环境是 VS2013+DEV 13.21.第一步,新建项目,(忽略)???2.修改Form1.cs的基类,Form修改为DevExpress.XtraBars.Ribbon.Rib ...

  4. Spark Structured Streaming框架(1)之基本用法

     Spark Struntured Streaming是Spark 2.1.0版本后新增加的流计算引擎,本博将通过几篇博文详细介绍这个框架.这篇是介绍Spark Structured Streamin ...

  5. 广义表(C++实现)

    广义表是非线性结构,其定义是递归的. 以下给出几种简单的广义表模型: 由上图我们可以看到,广义表的节点类型无非head.value.sub三种,这里设置枚举类型,利用枚举变量来记录每个节点的类型: e ...

  6. JVM中垃圾回收算法

    GC 算法与种类 GC的概念 Garbage Collection 垃圾收集1960年 List 使用了GCJava中,GC的对象是堆空间和永久区 引用计数法 老牌垃圾回收算法通过引用计算来回收垃圾使 ...

  7. 在javascript中使用replace

    javascript中使用replace功能很强大,不仅可以替换为字符串,还可以利用正则表达式,对匹配到的字符串为所欲为的进行操作,首先我们来了解一下replace的基本语法 定义和用法 replac ...

  8. 图数据库Neo4j简介

    图数据库Neo4j简介 转自: 图形数据库Neo4J简介 - loveis715 - 博客园https://www.cnblogs.com/loveis715/p/5277051.html 最近我在用 ...

  9. java客户端文件的上传和下载

    java客户端文件的上传和下载 //上传 public JTable upload(String id){ JTable table=new JTable(); System.out.println( ...

  10. 分享知识-快乐自己:快速理解(Java内部类)

    1):成员内部类 什么是内部类?: 内部类就是在一个类中定义另一个类. 定义语法: 使用命令行查看编译 产生的文件: 如何生成内部类对象? 创建规则:内部类对象 需要先声明外部类对象. 内部类以及外部 ...