『壹』 即時聊天軟體的原理,Web網頁的聊天又是怎麼實現的呢
這種即時聊天的需要常連接來實現,比較典型的有php的Workerman和nodejs的socket.io,
原理是這樣的。以socket.io為例,訪客端發送消息給nodejs[room(房間可以是域名加公司編號),uid(訪客id可以是瀏覽器內核或者代理加ip加操作系統生成),workerid(資料庫對應客服的id),type(消息類型 可以是sendmsg,getmsg。。。)],監聽到事件後在房間內廣播進行推送給對應的workerid進行渲染顯示在頁面。在發送信息的同時寫入到資料庫。
nodejs就是一個傳話的人但是24小時監聽的,邏輯基本都在nodejs中處理。
『貳』 用php socket製作聊天室。
何必自討苦吃呢?php 製作聊天室,關鍵技術是頁面局部自動刷新。
通過php ajax技術,就可以完美的達到你的要求。
具體原理如下,在網頁聊天框,被ajax調用,ajax傳遞參數一個php頁面,這個頁面同時調用資料庫,將資料庫中新內容返回到頁面聊天框中。
然後你可以自己調時間了,是20秒訪問一次資料庫,還是10秒訪問一次資料庫。
至於php的socket技術,說實話,我接觸php 8年了,沒碰過。
我想,關鍵不是用什麼技術,關鍵是解決問題。
希望對你有用。
『叄』 PHP的Socket怎麼進行服務端與客戶端的相互通信
伺服器提供
數據緩沖區
,並提供一種用戶識別機制。以此來給聊天用戶雙方發送相應的信息。
看似用戶與用戶之間的通信實質上是用戶在與伺服器通信。
我的一點理解
『肆』 php 怎麼實現即時聊天功能 - PHP進階討論
忘記說了 ... LS 的 DEMO 僅支持 IE ...Firefox 數據接收正常 ... 但是不處理收到的 javaScript ...不是那個不能同時開兩個的問題 ... 未找到解決辦法中 ...
『伍』 php開發即時通訊使用的什麼原理
最簡單的說,就是ajax定時刷新,比如間隔10秒。有新數據,就反饋到前台,沒新數據就等待下一次刷新。
但是真正在應用中需要考慮到消息及時性、伺服器壓力等等。
可以用comet進行設計
node.js 、socket
反正當你真的要自己開發一個im系統應用到自己的項目中的話,是一個很大的工程
『陸』 想用php和socket做個聊天程序,請問怎麼實現試試刷新
你網路一個php+socket的例子,跑通了你就不會這樣說了,在socket面前ajax就是垃圾
『柒』 PHP SOCKET 技術研究
今天試著寫一個
PHP
與
C
語言通過socket通訊的程序,看過PHP手冊,發現有好幾種方式可以建立socket
客戶端.
1、通過
fsockopen()
建立socket連接,然後用
用fputs()
發送消息,用
fgets()
接收消息。
2、通過
socket_create()
建立
socket
連接,然後用
socket_send()
or
socket_write()
發送消息,用
socket_recv()
or
socket_read()
發送消息。
很奇怪,我在手冊上看到了這樣一段話"本擴展模塊是實驗性的。該模塊的行為,包括其函數的名稱以及其它任何關於此模塊的文檔可能會在沒有通知的情況下隨
PHP
以後的發布而改變。我們提醒您在使用本擴展模塊的同時自擔風險。"
看來
php4.0
socket通訊還不是完全穩定。
今天我寫的客戶端要與服務端做兩次通訊,我用上面這個方法都寫了一個客戶端程序,發現當僅僅就一次通訊的時候,也就是PHP客戶端發送一次消息,然後接收返回消息,就關閉連接。這兩種方法都能正確快速的實現功能,但當做兩次通訊時,卻有明顯的差別,第一種方法第一次通訊特別快就結束了,這個我可以通過服務端的輸出看出來,但是第二次通訊要等上好幾分鍾才能結束,我試了好幾次都這樣,我不太清楚我的程序哪裡出錯了,還是這個方式連接就是有問題,但是第二種方法做這兩次通訊卻很快,正確!完成的非常的。
最後我根據
第二種情況寫了一個
class
//////////////////////////////
File
Description
//////////////////////////////////////////
//
Class
Name
:
socket
//
Version
:
V1.0
//
Functional
Outline
:
create
socket,and
send
message
to
server
//
Revision
history
:
2004/12/15
First
version
created
//
Current
:
2004/12/15
Liu
Yongsheng
//////////////////////////////////////////////////////////////////////////////////////////
class
socket{
var
$socket;
//socket
句柄
var
$sendflag
=
">>>";
var
$recvflag
=
"<<<";
var
$response;
var
$debug
=
1;
function
socket($hostname,$port){
$address
=
gethostbyname($hostname);
$this->socket
=
socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
$result
=
socket_connect($this->socket,$address,$port);
if($this->debug
==
1){
if
($result
<
0)
{
echo
"socket_connect()
failed.\nReason:
($result)
"
.
socket_strerror($result)
.
"<br>";
}
else{
echo
"connect
OK.<br>";
}
}
}
function
sendmsg($msg){
socket_write($this->socket,$msg,strlen($msg));
$result
=
socket_read($this->socket,100);
$this->response
=
$result;
if($this->debug
==
1){
printf("<font
color=#CCCCCC>%s
$msg</fon><br>",$this->sendflag);
printf("<font
color=blue>%s
$result</font><br>",$this->recvflag);
}
return
$result;
}
function
close(){
socket_close($this->socket);
}
}
『捌』 php 怎麼實現即時即時通訊
php實現實時通信一般有兩種方式:socket或comet。
socket是比較好的解決方案,問題在於不是所有的瀏覽器都兼容,伺服器端實現起來也稍微有點麻煩。
comet(基於HTTP長連接的"伺服器推")實現起來更加方便,而且兼容所有的瀏覽器。
comet也有好幾種實現方式,如iframe, http long request等。
『玖』 請問PHP能否實現即時通訊
可以的,但是運行的地方不能是虛擬主機,因為那些一般只有FTP文件管理+WEB控制面板,這種條件下基本上無法實現的,即使實現了,效果也不好
『拾』 java socket 和php 怎樣實現聊天功能,求幫忙
[java]
view
plain
<span
style="font-size:16px;">package
demo.net;
import
java.io.DataInputStream;
import
java.io.DataOutputStream;
import
java.io.IOException;
import
java.net.ServerSocket;
import
java.net.Socket;
import
java.util.Scanner;
/**
*
模擬qq聊天功能:
實現客戶端與伺服器(一對一)的聊天功能,客戶端首先發起聊天,輸入的內容在伺服器端和客戶端顯示,
*
然後伺服器端也可以輸入信息,同樣信息也在客戶端和伺服器端顯示
*/
//
伺服器類
public
class
ChatServer
{
private
int
port
=
8189;//
默認伺服器埠
public
ChatServer()
{
}
//
創建指定埠的伺服器
public
ChatServer(int
port)
{
this.port
=
port;
}
//
提供服務
public
void
service()
{
try
{//
建立伺服器連接
ServerSocket
server
=
new
ServerSocket(port);
//
等待客戶連接
Socket
socket
=
server.accept();
try
{
//
讀取客戶端傳過來信息的DataInputStream
DataInputStream
in
=
new
DataInputStream(socket
.getInputStream());
//
向客戶端發送信息的DataOutputStream
DataOutputStream
out
=
new
DataOutputStream(socket
.getOutputStream());
//
獲取控制台輸入的Scanner
Scanner
scanner
=
new
Scanner(System.in);
while
(true)
{
//
讀取來自客戶端的信息
String
accpet
=
in.readUTF();
System.out.println(accpet);
String
send
=
scanner.nextLine();
System.out.println("伺服器:"
+
send);
//
把伺服器端的輸入發給客戶端
out.writeUTF("伺服器:"
+
send);
}
}
finally
{//
建立連接失敗的話不會執行socket.close();
socket.close();
}
}
catch
(IOException
e)
{
e.printStackTrace();
}
}
public
static
void
main(String[]
args)
{
new
ChatServer().service();
}
}
</span>